带for循环的Python代码不起作用

时间:2019-04-19 15:12:18

标签: python matplotlib

我已经运行了以下代码,但是它显示了一个空图,没有绘制任何内容,我不知道原因 请帮助

import matplotlib.pyplot as plt
import math
for xx in range(10,100000,1000):
    plt.plot(xx,math.sqrt((.30*(1-.3))/(xx-1)))

2 个答案:

答案 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')

enter image description here