Pyplot线与数字月标签

时间:2014-08-11 07:38:17

标签: python matplotlib

这一定是直截了当的,但我已经谷歌搜索了一个小时,我疯了......

我有一个带有以下布局的pandas数据帧(“数据”)

Month, Value

201101, 5.5

201102, 4.9

201103, 5.1

etc...

我只想在几个月内绘制一行数值。

pyplot.plot(data["Value"])

画线,但x轴只是1,2,3 ......而不是201101,201102,201103。

如果轴被解释为连续,201201将远离201112,这不是我想要的。

诀窍是什么?

1 个答案:

答案 0 :(得分:2)

假设您的“月份”数据采用int格式而不是str,您只需要提供 matplotlib x值。函数plot()至少取1个值,在这种情况下,它需要y值(在x,y图中)并创建x1, 2, 3..适合。所以你可以简单地做

pyplot.plot(data["Month"], data["Value"])

正如您将注意到输出不是很漂亮,您可以更好地将日期转换为datetime对象。这是一个例子

import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime
from matplotlib.dates import DateFormatter

monthsFmt = DateFormatter("%m '%y")

data = pd.DataFrame(dict(Month = [201101, 201102, 201103, 201104],
                         Value = [5.5, 4.9, 5.1, 6.7]))


datetime_list = [datetime.strptime(str(s), "%Y%m") for s in data['Month']]

ax = plt.subplot(111)
ax.plot_date(datetime_list, data["Value"])
ax.xaxis.set_major_formatter(monthsFmt)
plt.show()

可以找到更完整的示例here