在x轴上绘制非数值数据(例如日期)
我想把数字数据和非数字数据一起画图,比如像这样:
import matplotlib.pyplot as pl
x=['a','b','c','d']
y=[1,2,3,4]
pl.plot(x,y)
不过,当我用matplotlib这个画图工具时,会收到一个警告,提示数据不是浮点数(ValueError: invalid literal for float(): a)。
在他们的'使用指南'中,他们建议先把数字数据放在x轴上,然后再进行格式化。有没有办法直接像上面那样做呢?
2 个回答
13
import matplotlib.pyplot as plt
x = ['a','b','c','d']
y = [1,2,3,4]
plt.plot(y)
plt.xticks(range(len(x)), x)
plt.show()
顺便提一下,日期在这个意义上是数字的(也就是说,它们有固有的顺序和间隔)。
Matplotlib在处理时间数据的绘图方面做得很好,而且和上面的例子完全不同。这里有一个示例,在matplotlib的示例部分中可以找到,但它主要是展示几种不同的功能。一般来说,你只需要使用plot_date
,或者直接绘制数据后调用ax.xaxis_date()
(或者yaxis_date
),这样就可以告诉matplotlib使用各种日期定位器和刻度。
15
使用 xticks 这个函数。
import matplotlib.pyplot as pl
xticks=['a','b','c','d']
x=[1,2,3,4]
y=[1,2,3,4]
pl.plot(x,y)
pl.xticks(x,xticks)
pl.show()