Matplotlib从两个x和y点列表中错误地绘制数据

时间:2016-12-12 15:40:39

标签: python python-3.x matplotlib plot

以下是两个清单:

x = [736297.48567129625, 736297.53253472224, 736297.57858796301, 736297.50894675928, 736297.55557870376]

y = [-757, -706, 385, -247, 126]

这是我的代码:

import matplotlib.pyplot as plt
import matplotlib.dates as mdate

x = [736297.48567129625, 736297.53253472224, 736297.57858796301, 736297.50894675928, 736297.55557870376]
y = [-757, -706, 385, -247, 126]

plt.figure()
plt.plot_date(x, y, fmt='b-')
plt.grid(True)
plt.show()

x列表值使用mdate.epoch2num(epoch)从纪元时间转换。

这是我得到的图表,显然没有按时间顺序绘制:

Matplotlib improperly plotted chart

加分问题:您可以看到x轴上的时间格式看起来很糟糕。知道如何以yy-mm-dd-hh-ss格式呈现它吗?

感谢所有python大师的帮助!

1 个答案:

答案 0 :(得分:1)

pyplot只是按照您提供数据的顺序绘图。 事实证明,x没有排序,所以情节有点“向后”。

然后,您应该对索引(及其相应的值)进行排序,以获得您想要的内容:

#Sort by date (x) and apply change to values (y) 
xx, yy = zip(*sorted(zip(x, y)))
plt.plot_date(xx, yy, fmt='b-')

给你以下情节: enter image description here

pltrdy

奖金问题: 看一下here的pyplot日期刻度格式。它可能很容易理解并做你想做的事。