我已经找了几个小时了,在Python中我用for循环来创建子情节,所以我没有定义ax和fig,所以我似乎没有找到任何解决方案。
df_june['hours']=df_june['date'].dt.hour
*df_june is dataset only for 1st of june*
for i in important_cols[1:]:
sns.lineplot(x='hours', y=i, data=df_june)
plt.xticks([0,4,8,12,16,20,24])
plt.show()
*import_cols are columns I am only needing to plot*
我使用plt.xticks([0,4,8,12,16,20,24])来创建刻度,但是我希望它是每小时的,并且格式是00:00和24:00。
3条答案
按热度按时间2w3rbyxf1#
我所做的就是换成这个
以及
rnmwe5a22#
我们可以使用列表解析从
get_xticks()
创建xticklabels
,在xtick
的末尾加上':00'
,在前面加上'0'
,然后将str
缩短为(最后)5个索引(即格式化xx:xx
):xticklabels
看起来像:hwazgwia3#
尝试设置x-tick标签的格式,以“00:00”和“24:00”的格式显示小时,而不是整数,您可以使用matplotlib的DateFormatter类和所需的格式字符串。
下面是一个更新后的代码片段,应该可以达到预期的效果:
这里,我们使用plt.subplots()创建子图,并将其存储在axs变量中,然后迭代每个重要列,并使用sns.lineplot()函数中的ax参数在单独的子图中为每列绘制线图。
我们使用
axs[i].xaxis.set_major_locator(mdates.HourLocator(interval=1))
设置x轴刻度位置,并使用格式化x轴刻度标签axs[i].xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
,它将以所需的格式显示小时。
生成的绘图应具有x刻度标签,以“00:00”和“24:00”格式显示小时。