2

我遇到了一个 python 绘图问题。看起来我绘制的线从最后一个值点回到第一个值点,所以这条线是封闭的,没有两个开口端。很难描述,我在这里上传了一张图片: 圆形图

这是相关代码:

plt.plot(newx, newy0Normalized, color='red', linewidth=2, marker='1');
plt.plot(newx, newy1Normalized, color='green', linewidth=2, marker='2');

其中 newx 是 50-200 范围内的整数,newy0Normalized 是相应的百分比

newx 和 newy0Normalized 的生成方式有点长。我在这里打印数据,以便您了解数据(和结构)的样子:

for i in range(len(newx)):
    print "%d\t%.2f" % (newx[i], newy0Normalized[i])
100 7.69
101 14.81
102 9.09
103 8.33
more data here
135 40.00
136 60.00
137 50.00
139 0.00
66  100.00
67  0.00
68  0.00
69  0.00
more data here
97  11.54
98  14.81
99  11.11
4

1 回答 1

2

这就是 matplotlib 线图的工作原理:它从列表中的第一个数据点开始,然后画一条线到列表中的下一个数据点,依此类推,直到到达列表中的最后一个点。不过,这不是一个闭环。请注意图表中间 x = 99 和 x = 100 之间的中断。在您的情况下,您的数据从 x = 139 跳转到列表中间的 x = 66,因此 matplotlib 将相应地从该点绘制一条线从 x = 139 到 x = 66。

如果您不希望发生这种情况,只需在绘制数据点之前按其 x 坐标对数据点进行排序。或者,您可以使用','or'.'格式说明符将它们绘制为没有连接线的点。(基于科学的理由,在大多数情况下,我会建议后者,但哪个是正确的当然取决于您对数据的解释。)

于 2013-02-21T19:51:41.970 回答