Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python dataframe.plot.bar()似乎没有将期间索引处理为';x';正确地_Python_Pandas_Dataframe_Matplotlib_Xticks - Fatal编程技术网

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)已经解决,这使我认为这是一个错误。我仍然无法提供我的periodindex
idx_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
与否,我都会得到相同的错误。据我所知,这个错误其实是预料之中的。