我已经运行了以下代码,但是它显示了一个空图,没有绘制任何内容,我不知道原因 请帮助
import matplotlib.pyplot as plt
import math
for xx in range(10,100000,1000):
plt.plot(xx,math.sqrt((.30*(1-.3))/(xx-1)))
答案 0 :(得分:3)
如果您要分别绘制每个点,请尝试使用plt.scatter()
,如下所示:
for xx in range(10,100000,1000):
plt.scatter(xx, math.sqrt((.30*(1-.3))/(xx-1)))
如果您想绘制一条连续线,则需要预先制作矢量,然后将其传递给plt.plot()
。我建议使用numpy
,因为np.array
可以处理矢量化数据
import numpy as np
# Make x vector
xx = np.arange(10,100000,1000)
# Make y
y = np.sqrt((.30*(1-.3))/(xx-1))
# Plot
plt.plot(xx, y)
答案 1 :(得分:0)
当其他答案解决了问题时,您应该知道自己的尝试并非完全错误。您可以使用plt.plot
在for循环中绘制各个点。但是,在这种情况下,您将必须指定标记。可以使用bo
作为
for xx in range(10,100000,1000):
plt.plot(xx,math.sqrt((.30*(1-.3))/(xx-1)), 'bo')
或者,除了其他答案外,您甚至可以对整个数组使用plt.scatter
,如下所示。请注意,在这种情况下,由于您要在此处执行矢量化操作,因此必须使用NumPy的sqrt
模块,而math.sqrt
xx = np.arange(10,100000,1000)
plt.scatter(xx,np.sqrt((.30*(1-.3))/(xx-1)), c='green', edgecolor='k')