繁体   English   中英

如何让 Plt.plot 在 python 中显示我的抛物线?

[英]How to make Plt.plot show my parabolic line in python?

也许这将是重复的问题,但我找不到任何解决方案。 通常我编码的内容应该在python中显示一条曲线。 但是用这个代码我看不到它。 我的代码或 pycharm 有问题吗? 这段代码只向我显示了一个带有正确轴的空图形。

我确实在 plt.plot(at[i], st, "ro") 中添加了“ro”。 这向我展示了图表上的点,但我想看到完整的线条。


at = [0,1,2,3,4,5,6]

for i in range(len(at)):
    st = at[i]**2
    plt.plot(at[i], st)
plt.show()

这是您通常会这样做的方式:

import numpy as np
import matplotlib.pyplot as plt                                                                                                                                                                                                                  
at = np.array([0,1,2,3,4,5,6])
at2 = at ** 2
plt.plot(at,at2)
plt.show()

您可以使用plt.plot(at,at2, c='red', marker='o')来查看斑点。

有关详细说明,请阅读文档。

也许在绘图之前完全计算要绘制的值。

at = [0,1,2,3,4,5,6]
y = [xi**2 for xi in at]

plt.plot(at, y)

或者用一个函数来替代

from math import pow

at = [0,1,2,3,4,5,6]

def parabolic(x):
    return [pow(xi,2) for xi in x]

plt.plot(at, parabolic(at))

两者都返回以下图: 在此处输入图片说明

首先生成两个列表,然后绘制图:

at = [0,1,2,3,4,5,6]
st = [key**2 for key in at] 
plt.plot(at,st)

在此处输入图片说明

请注意,以这种方式在图形上绘制的顺序仅完成了一次,因此效率更高。

其他答案为您的问题提供了解决方案,但不要告诉您为什么您的代码不起作用。

没有“看到任何东西”的原因是plt.plot(at[i], st)试图在你给它的点之间画线。 但是因为你只给它单一的值,所以它之间没有任何界限。 结果,情节上什么也没出现

当您更改为调用plt.plot(at[i], st, 'ro')您是在告诉它在点处绘制单个圆圈,并且这些圆圈不在点之间,因此会出现

其他答案向您展示了如何将多个值传递给plot ,因此 matplotlib 可以在这些值之间画线。

你的一个评论说“它仍然不是抛物线”,这是因为 matplotlib 不是一个符号绘图库。 你只需给它数值,然后它就会将这些数值绘制到输出设备上。 sympy是一个用于进行符号计算并支持绘图的库,例如:

from sympy import symbols, plot

x = symbols('x')

plot(x**2, (x, 0, 6))

为我做正确的事。 当前版本 (1.4) 不处理不连续性,但这将在下一个版本中修复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM