在 x 轴上绘制非数字数据(例如日期)的图表

14

我想绘制数值数据与非数值数据的图表,比如这样的:

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

在他们的'How-to'中,他们建议首先将数字数据放在x轴上,然后进行格式化。是否有一种直接的方法可以做到这一点(如上所述)?

2个回答

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

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

enter image description here

顺便提一句,日期在这个意义上是数字(即它们具有固有的顺序和间距)。

Matplotlib可以很好地处理时���数据的绘图,与上面的示例非常不同。在matplotlib的示例部分examples sectionan example,但它着重展示了几件不同的事情。一般来说,你只需要使用plot_date或者直接绘制数据并调用ax.xaxis_date()(或yaxis_date)告诉Matplotlib使用各种日期定位器和刻度线。


它只是把标签(尝试执行您的代码)放在x轴下方。我想将“a”、“b”、“c”、“d”作为x值放在x轴上。 - Max Li
@Max Li - 我没想清楚,我本来想把编辑过的部分放在上面。 - Joe Kington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接