在x轴上绘制非数值数据(例如日期)

14 投票
2 回答
19166 浏览
提问于 2025-04-16 23:04

我想把数字数据和非数字数据一起画图,比如像这样:

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

撰写回答