我的绘图窗口显示右轴,但绘图为空白。只有在我将绘图样式更改为红点时才会填充图表

时间:2017-10-08 00:18:43

标签: python matplotlib plot

我正在尝试为简单的射弹运动制作一个情节。我的设置如下:

>>> js = db.read_text(..., blocksize=1e6)...  # 1MB chunks

情节窗口出现但它只是没有显示任何内容。当我更换 plt.plot(x,y)与plt.plot(x,y,' ro')然后它很好。但这使我的观点看起来很大。有没有办法让它看起来像一条平滑的曲线?

2 个答案:

答案 0 :(得分:0)

plt.plot(x, y, marker = 'o', color = 'black', size = '8')

有关不同类型标记的信息,请参阅documentation

答案 1 :(得分:0)

pyplot中,plot函数默认是在点序列之间绘制线条,而不是点本身。这是因为绘图的默认样式是'b-'或蓝色实线。但这仅显示您的输入是否有多个点。例如,

plt.plot([0,1],[5,6])
plt.show()

将在点(0,5)(1,6)之间生成一条线。当您仅针对plt.plot()x的单个输入调用y时,它会在第一个点之间绘制一条线而不是任何内容。即该线永远不会被绘制。

通过将样式参数从默认值更改为'ro',您可以告诉matplotlib将每个点绘制为红色圆圈,而不是在每对点之间绘制一条线。正如你所指出的那样,圈子可能非常大。

有几种方法可以修复您的代码:绘制点而不是圆圈,或者使圆圈变小,或者保留所有x和y坐标的列表并将它们绘制成一条线。

选项1

将你的情节风格改为'r.'会产生小红点:

plt.plot(x,y, 'r.')

enter image description here

选项2

添加markersize参数可以改变圆圈的大小:

plt.plot(x,y, 'ro', markersize=0.3)

enter image description here

选项3

您还可以保留所有积分的清单并将它们绘制在一起:

x_list = []
y_list = []
while t < 4:
    x = v_x*t
    y = v_yo*t + 0.5*a*t**2
    t+=0.01
    x_list.append(x)
    y_list.append(y)

plt.plot(x_list,y_list)
plt.show()

enter image description here