我有一个带有随机数的pandas数据帧,其中索引的类型为dtype='datetime64[ns]
。您将在问题的最后找到可重现的代码。
当我使用ax.dfplot()
进行绘制时,我得到了一个格式精美的x轴,如下所示:
我想制作一个条形图,但是当我使用ax = df.plot(kind = 'bar')
时,x轴会搞砸:
我该如何改变?
感谢您的任何建议!
输入数据框和两个第一个图表的可重现代码:
import pandas as pd
import numpy as np
import matplotlib.dates as mdates
# Dataframe with 1 or zero
np.random.seed(123)
rows = 10
df = pd.DataFrame(np.random.randint(90,110,size=(rows, 2)), columns=list('AB'))
datelist = pd.date_range(pd.datetime(2017, 1, 1).strftime('%Y-%m-%d'), periods=rows).tolist()
df['dates'] = datelist
df = df.set_index(['dates'])
df.index = pd.to_datetime(df.index)
print(df.head(10))
#print(df)
# Option 1
# -Time series
# -kind is undefined
title = 'time series'
ax = df.plot(title = title, fontsize = 10)
#ax.legend().set_visible(legend)
# Option 2
# -Bar chart
# -kind is defined as bar
title = 'Bar'
ax = df.plot(title = title, fontsize = 10, kind = 'bar')
这是我到目前为止所尝试的内容:
Here是一个有点类似的问题,但我遇到了那里提供的可重现片段的问题。也许是一个版本问题,因为它已经有几年了?
我还能够使用建议here至少改进格式:
title = 'Bar'
ax = df.plot(title = title, fontsize = 10, kind = 'bar')
xtl=[item.get_text()[:10] for item in ax.get_xticklabels()]
_=ax.set_xticklabels(xtl)
我对这些建议here寄予厚望,因为我似乎至少能够在mdates.DateFormatter('%d')
部分显示数月(使用m代替)。但是我在显示结果时遇到了问题:
title = 'Bar'
ax = df.plot(title = title, fontsize = 10, kind = 'bar')
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
我只是得到了这个: