这一定是直截了当的,但我已经谷歌搜索了一个小时,我疯了......
我有一个带有以下布局的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,这不是我想要的。
诀窍是什么?
答案 0 :(得分:2)
假设您的“月份”数据采用int
格式而不是str
,您只需要提供
matplotlib
x值。函数plot()
至少取1个值,在这种情况下,它需要y
值(在x,y图中)并创建x
值1, 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