python - matplotlib 连接折线图中的错误点

标签 python matplotlib

我正在使用 matplotlib python 库绘制两个列表。有两个数组 xy 绘制时看起来像这样-

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()

这应该给你你想要的,如下所示:

enter image description here

关于python - matplotlib 连接折线图中的错误点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31653968/

相关文章:

python - Matplotlib 如何获取长度线

python - 尝试制作条形图,bar() 缺少 1 个必需的位置参数 : 'height'

python - 综合整理 "or"连接的几条语句

python - 在单元测试中使用 django.template 上下文时遇到问题

python - 错误: "missing 5 required positional arguments" In Python, Tkinter

python - 在 A* 搜索中选择/排序最佳节点的更有效方法是什么?

python - Figsize 不适用于 matplotlib 3d 绘图

Python - 运行脚本在鸡蛋里?

python - Pandas - 返回数据框中的第一项,按用户分组

python - 如何让函数在 python 中返回一个图形(使用 matplotlib)?