Python dataframe.plot.bar()似乎没有将期间索引处理为';x';正确地
在Python dataframe.plot.bar()似乎没有将期间索引处理为';x';正确地,python,pandas,dataframe,matplotlib,xticks,Python,Pandas,Dataframe,Matplotlib,Xticks,在matplotlib和pandas.DataFrame之间的集成中,我发现了一个在我看来似乎是错误的东西,尽管可能是我犯了错误 我有一段时间,我想用代表季度的条形图绘制条形图。我希望修复轴的开始和结束日期,即使我的数据没有一直运行到轴的左侧或右侧 我正在绘制的数据帧以周期作为索引。 我所发现的是,虽然手册()指出索引被取为x,但我们看到ax.get_xticks()返回0,1,2,…整数作为xticks,这意味着我无法轻松为标尺提供新的最大/最小值 此外,当我试图通过ax.set\u xtic
matplotlib
和pandas.DataFrame
之间的集成中,我发现了一个在我看来似乎是错误的东西,尽管可能是我犯了错误
我有一段时间,我想用代表季度的条形图绘制条形图。我希望修复轴的开始和结束日期,即使我的数据没有一直运行到轴的左侧或右侧
我正在绘制的数据帧以周期作为索引。
我所发现的是,虽然手册()指出索引被取为x
,但我们看到ax.get_xticks()
返回0,1,2,…
整数作为xticks,这意味着我无法轻松为标尺提供新的最大/最小值
此外,当我试图通过ax.set\u xticks()
或ax.set\u xlim()
设置范围时,我得到了错误TypeError:Axis必须设置freq以转换为周期
因此,似乎i)我无法轻松添加刻度范围,因为我无法将x
设置为索引;ii)我不能使用一系列周期(或者似乎是日期时间)作为轴函数的输入来设置范围,因为它需要一个频率
我这样做是因为stacked=True
是py.DataFrame.plot.bar()
的有效输入,而没有集成的方式来使用plt.plot()
或plt.plot.bar()
构建堆叠图表
注意,我已经做了“很长的路”,问题I)已经解决,这使我认为这是一个错误。我仍然无法提供我的periodindexidx_dts
来设置x轴的范围
下面是一个代码示例:
# external modules
import pandas as pd
# create a dataframe with a long periodindex
asof = pd.datetime(2019, 12, 31)
report_freq = 'Q-NOV'
num_periods = 8
idx_dts = pd.date_range(end=asof,
freq=report_freq,
periods=num_periods,
name='periods')
idx_dts = idx_dts.to_period(report_freq)
idx_dts # a period.PeriodIndex
# set a shorter dataframe not covering the full span of periods
df = pd.DataFrame({'a': (1,2,3,4), 'b': (6,7,8,9), 'c': (10,20,30,40)})
df.index = idx_dts[3:7]
# take a look at the dataframe
df
# plot as a stacked barchart
ax=df.plot.bar(stacked=True)
# notice ticks are array([0,1,2,3]) NOT the index of df as indicated
ax.get_xticks()
# labels have been taken from the index though
ax.get_xticklabels()[:]
# I want to set a wider periods axis corresponding toe idx_dts
# error: 'TypeError: Axis must have `freq` set to convert to Periods'
ax.set_xticks(idx_dts)
你看得出这是我的第一篇帖子吗:~熊猫酒吧是绝对的。第一条是0,第二条是1,等等。你可以很容易地将刻度设置为负数,ax.set\u xticks(np.arange(-3,10))
@ImportanceOfBeingErnest,当我使用plt.plot.bar()时,使用相同的设置(无堆叠),xticks会作为与日期对应的整数返回。我希望以后能够添加额外的条,这样就很难在分类Xticksk上对齐了。无论stacked=True
与否,我都会得到相同的错误。据我所知,这个错误其实是预料之中的。