【发布时间】:2016-02-18 00:35:17
【问题描述】:
我正在尝试调整 x 轴日期刻度标签的格式,使其仅显示年份和月份值。从我在网上找到的内容来看,我必须使用mdates.DateFormatter,但它在我当前的代码中根本没有生效。任何人都看到问题出在哪里? (日期是 pandas Dataframe 的索引)
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
fig = plt.figure(figsize = (10,6))
ax = fig.add_subplot(111)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
basicDF['some_column'].plot(ax=ax, kind='bar', rot=75)
ax.xaxis_date()
可重现的场景代码:
import numpy as np
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
rng = pd.date_range('1/1/2014', periods=20, freq='m')
blah = pd.DataFrame(data = np.random.randn(len(rng)), index=rng)
fig = plt.figure(figsize = (10,6))
ax = fig.add_subplot(111)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
blah.plot(ax=ax, kind='bar')
ax.xaxis_date()
仍然无法只显示年份和月份。
如果我在 .plot 之后设置格式,则会出现如下错误:
ValueError: DateFormatter 发现 x=0 的值,这是一个非法日期。这通常是因为您没有通知轴它正在绘制日期,例如使用 a
x.xaxis_date()。
如果我把它放在 ax.xaxis_date() 之前或之后,都是一样的。
【问题讨论】:
-
我在这里找到了另一个很好的答案:stackoverflow.com/questions/30133280/…
标签: python date pandas matplotlib