【发布时间】:2018-02-22 16:21:42
【问题描述】:
我有一本字典,其中键是日期,值是整数。我想用零填充缺失的日期并绘制它。这是我到目前为止所得到的。
data = {datetime.date(2018, 1, 26): 1, datetime.date(2018, 1, 18): 1, datetime.date(2018, 1, 11): 4, datetime.date(2017, 12, 31): 2, datetime.date(2018, 1, 14): 1, datetime.date(2018, 1, 9): 2, datetime.date(2018, 1, 7): 1, datetime.date(2018, 1, 16): 2, datetime.date(2018, 1, 15): 2, datetime.date(2018, 1, 10): 1, datetime.date(2018, 1, 5): 1, datetime.date(2018, 1, 13): 3}
dates = pd.date_range('2018-01-01', date.today())
data = pd.Series(data=data)
data = data.reindex(dates, fill_value=0)
fig, ax = plt.subplots(figsize=(15, 7))
data.plot(kind='bar', ax=ax)
plt.xticks(rotation=45)
plt.gca().xaxis.set_major_formatter(plt.FixedFormatter(data.index.to_series().dt.strftime("%b %d")))
我遇到的问题是现在 x 轴上塞满了太多的日期标签。我怎样才能仍然显示图表上的所有点,但只在 x 轴上标记一半的刻度?
编辑:潜在解决方案:
通过添加以下代码,我能够跳过每个第二个 x 轴标签:
xticks = ax.xaxis.get_major_ticks()
for i in range(0, len(xticks)):
if i % 2 != 0:
xticks[i].label1.set_visible(False)
【问题讨论】:
-
请为
data添加数据,以便您的示例可以重现。 -
添加实际数据
标签: python pandas matplotlib