我正在使用 matplotlib python 库绘制两个列表。有两个数组 x 和 y 绘制时看起来像这样-
Click here for plot (sorry don't have enough reputation to post pictures here)
使用的代码是这样的-
import matplotlib.pyplot as plt
plt.plot(x,y,"bo")
plt.fill(x,y,'#99d8cp')
它绘制点,然后使用一条线连接这些点。但问题是它没有正确连接这些点。 x 轴上的点 0 和 2 连接错误,而不是 1 和 2。类似地在另一端它连接点 17 到 19,而不是 18 到 19。我还尝试使用 - 绘制简单的线图 -
plt.plot(x,y)
但是它也错误地连接了这些点。如果有人能为我指出正确的方向,说明为什么会发生这种情况以及如何解决它,我将不胜感激。
谢谢!!
最佳答案
matplotlib 的线条期望坐标是有序的,因此您以一种“奇怪”的方式连接您的点(尽管与您告诉 matplotlib 做的完全一样,例如从 (0,1) 到 (3,2) ).您可以通过在绘图之前简单地对数据进行排序来解决此问题。
#! /usr/bin/env python
import matplotlib.pyplot as plt
x = [20, 21, 22, 23, 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18]
y = [ 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1]
x2,y2 = zip(*sorted(zip(x,y),key=lambda x: x[0]))
plt.plot(x2,y2)
plt.show()
这应该给你你想要的,如下所示:
关于python - matplotlib 连接折线图中的错误点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31653968/