我正在从一个以工作日名称作为索引的熊猫数据框中绘制数据。地块看起来不错。但是,x轴不显示工作日(星期一至星期日的顺序)。我该如何显示日期?
如我的代码所示,我已经尝试了在网站上其他答案中找到的一些解决方法,但是我所要做的就是让第一个(星期一)滴答声与标签一起出现。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(12,6))
ax1 = fig.add_subplot(111)
ax1.xaxis.set_ticks([1])
ax1.xaxis.set_label_text(" ")
ax1.set_title(" item1 ", fontweight='bold')
avgs_df.loc[order,['item1']].plot(ax=ax1, legend=False)
在此处绘制:
我还没有完全理解.xaxis.set_ticks([1])
上的线条,但是到目前为止,这是唯一在情节上贴上日期标签的东西。更改方括号中的值似乎会在第一个标签的顶部打印相同的单个标签。
我希望在情节的x轴上获得全部7天的刻度和标签。
数据框包含七个字段:时间(一天中的小时)和六个数字为0:1的项目字段。看看头的产量:
avgs_df.head()
此处的输出图像(我没有足够的声誉):
答案 0 :(得分:1)
.xaxis.set_ticks([1])
仅将刻度线设置在位置1。这就是为什么只有星期一。
要获得7个刻度,您应该传递类似.xaxis.set_ticks(range(7))
的信息(位置通常从0开始,因此range(7)
会产生正确的刻度位置,从0到6)。
我不太确定这里的数据帧索引是什么(您的图片显示了所有星期五),但是如果索引像我所怀疑的那样是工作日,则即使删除.xaxis.set_ticks([1])
行也应该可以工作。如果有足够的空间,matplotlib
会自动将它们全部放入图片中。
因此,您有168行,一周中的每一天中的每小时。如果使用ax1.xaxis.set_ticks(np.arange(0, 168, 24.0))
仅允许添加所需的刻度,则可以使用以下方法设置刻度的文本:
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)])
获取索引的确切文本并将其作为刻度线的文本放置。