Python绘图连线似乎从最后一个点回到第一个点

2 投票
1 回答
2842 浏览
提问于 2025-04-17 16:40

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

circle plot

下面是相关的代码:

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

1 个回答

2

这是matplotlib绘制线条的工作原理:它从列表中的第一个数据点开始,然后画一条线到下一个数据点,依此类推,一直到列表中的最后一个点。不过,这不是一个闭合的循环;注意在图表中x = 99和x = 100之间有一个断点。在你的情况下,数据在列表中从x = 139跳到了x = 66,所以matplotlib会相应地从x = 139的点画一条线到x = 66的点。

如果你不想出现这种情况,只需在绘图之前按x坐标对数据点进行排序。或者,你可以选择只绘制点而不连接线,这样可以使用',''.'的格式说明符。(从科学的角度来看,在大多数情况下我会建议后者,但哪种方式正确当然取决于你对数据的解读。)

撰写回答