Python 3.x 如何使索引值显示在x轴刻度上?

Python 3.x 如何使索引值显示在x轴刻度上?,python-3.x,pandas,matplotlib,axis-labels,Python 3.x,Pandas,Matplotlib,Axis Labels,我正在绘制一个熊猫数据框中的数据,该数据框以工作日名称作为索引。情节看起来不错;但是,x轴不显示工作日(周一至周日顺序)。我怎样才能得到显示的天数 正如我的代码所示,我尝试了一些在网站其他答案中找到的变通方法,但我所完成的只是第一次(星期一)在标签上打勾 将熊猫作为pd导入 将numpy作为np导入 将matplotlib.pyplot作为plt导入 图=plt.图(图尺寸=(12,6)) ax1=图add_子批次(111) ax1.xaxis.set_刻度([1]) ax1.xaxis.set

我正在绘制一个熊猫数据框中的数据,该数据框以工作日名称作为索引。情节看起来不错;但是,x轴不显示工作日(周一至周日顺序)。我怎样才能得到显示的天数

正如我的代码所示,我尝试了一些在网站其他答案中找到的变通方法,但我所完成的只是第一次(星期一)在标签上打勾

将熊猫作为pd导入
将numpy作为np导入
将matplotlib.pyplot作为plt导入
图=plt.图(图尺寸=(12,6))
ax1=图add_子批次(111)
ax1.xaxis.set_刻度([1])
ax1.xaxis.set_标签_文本(“”)
ax1.设置标题(“item1”,fontwweight='bold')
平均位置[order,['item1']]图(ax=ax1,legend=False)
在此绘图:

带有
.xaxis.set_ticks([1])
的线条我并不完全理解,但到目前为止,它们是唯一在绘图上添加了日期标签的东西。更改方括号中的值似乎会在第一个标签的顶部打印相同的单个标签

我希望在绘图的x轴上得到所有七天的记号和标签

数据框包含七个字段:时间(一天中的小时)和六个数字为0:1的项字段。从总收益率来看:

avgs_df.head()
此处的输出图像(我没有足够的声誉):

.xaxis.设置刻度([1])
仅在位置1设置刻度。这就是为什么你只有星期一

要有7个记号,您应该传递类似于
.xaxis.set_ticks(范围(7))
(位置通常从0开始,因此
范围(7)
生成正确的记号位置,从0到6)

我不确定这里的dataframe索引是什么(您的图片显示的是所有的星期五),但是如果索引是我怀疑的工作日,那么即使只是删除
.xaxis.set_ticks([1])
行,它也应该可以工作<如果有足够的空间,code>matplotlib将自动将它们全部放在图片中

评论后编辑 所以你有168行,一周中每小时一行。如果使用
ax1.xaxis.set_ticks(np.arange(0,168,24.0))
允许您仅添加所需的ticks,则可以使用以下命令设置ticks的文本:

ax1.set_xticklabels(["Monday", "Tuesday", ...]) #make a list of all days
只要在
.xaxis.set_ticks()
之后添加这一行就可以了。请确保提供一个具有相同长度记号的列表

如果数据帧索引是日期名称,则可以使用:

ax1.set_xticklabels(avgs_df.index[np.arange(0, 168, 24.0)])

获取索引的确切文本并将其作为记号文本放置。

是的,数据框中确实有其他工作日的条目。不幸的是,这个答案不起作用。我似乎打印了七次“星期一”。共有24次观察(一天中每小时一次)。我想这个答案可能是在每个小时的位置打印“星期一”。理想情况下,让它在当天0:00打印对我来说是最好的。谢谢你的回复!另外,我确实通过
ax1.xaxis.set_ticks(np.arange(0,168,24.0))
获得了位于正确位置的刻度,因为在7个工作日内有168条记录对应于一天24小时。如果我能想出如何让工作日显示。。。