Python Pyplot上的多个x标签
下面是我的直线图代码。我想在当前标签下再加一个x标签(这样我可以显示一周中的几天) 编辑:在遵循文档之后,我有两个问题。比例从31变为16,一周中的天数与天数不一致Python Pyplot上的多个x标签,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,下面是我的直线图代码。我想在当前标签下再加一个x标签(这样我可以显示一周中的几天) 编辑:在遵循文档之后,我有两个问题。比例从31变为16,一周中的天数与天数不一致 data['DAY']=["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31
data['DAY']=["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"]
tick_labels=['1','\n\nThu','2','\n\nFri','3','\n\nSat','4','\n\nSun','5','\n\nMon','6','\n\nTue','7','\n\nWed','8','\n\nThu','9','\n\nFri','10','\n\nSat','11','\n\nSun','12','\n\nMon','13','\n\nTue','14','\n\nWed','15','\n\nThu','16','\n\nFri','17','\n\nSat','18','\n\nSun','19','\n\nMon','20','\n\nTue','21','\n\nWed','22','\n\nThu','23','\n\nFri','24','\n\nSat','25','\n\nSun','26','\n\nMon','27','\n\nTue','28','\n\nWed','29','\n\nThu','30','\n\nFri','31','\n\nSat']
tick_locations = np.arange(31)
plt.figure(figsize=(15,8))
plt.xticks(tick_locations, tick_labels)
plt.plot('DAY','SWST',data=data,linewidth=2,color="k")
plt.plot('DAY','WMID',data=data,linewidth=2,color="m")
plt.xlabel('DAY', fontsize=20)
plt.ylabel('VOLUME', fontsize=20)
plt.legend()
plt.show()
您正在寻找的pyplot函数是
plt.xticks()
。这实际上是ax.setxticks()
和ax.setxticklabels()
从:
参数:
滴答声:像数组一样
应放置记号的位置列表。你可以通过考试
空列表以禁用XTICK
标签:
array_like,可选在给定位置放置的显式标签列表
locs
您可能需要下面的代码。注意:您可能应该明确设置记号位置和标签,以避免将标签设置在错误的位置:
tick_labels = ['1','\n\nThu','2',..., '31','\n\nSat')
plt.xticks(tick_locations, tick_labels)
请注意,面向对象的API(即使用ax.
)允许更多可定制的绘图
更新
编辑后,我看到您要在下面显示的标签是同一列表的一部分。因此,标签列表的长度实际上是62。因此,您需要将列表中的每两个元素连接在一起:
tick_labels=['1','\n\nThu','2','\n\nFri','3','\n\nSat','4','\n\nSun','5','\n\nMon','6','\n\nTue','7','\n\nWed','8',
'\n\nThu','9','\n\nFri','10','\n\nSat','11','\n\nSun','12','\n\nMon','13','\n\nTue','14','\n\nWed','15',
'\n\nThu','16','\n\nFri','17','\n\nSat','18','\n\nSun','19','\n\nMon','20','\n\nTue','21','\n\nWed','22',
'\n\nThu','23','\n\nFri','24','\n\nSat','25','\n\nSun','26','\n\nMon','27','\n\nTue','28','\n\nWed','29',
'\n\nThu','30','\n\nFri','31','\n\nSat']
tick_locations = np.arange(31)
new_labels = [ ''.join(x) for x in zip(tick_labels[0::2], tick_labels[1::2]) ]
plt.figure(figsize=(15, 8))
plt.xticks(tick_locations, new_labels)
plt.show()
切勿使用ax。在未设置刻度位置的情况下设置刻度标签。这可以通过
ax.set\xticks
完成
ax.set_xticks(...)
ax.set_xticklabels(...)
当然,您也可以对pyplot执行同样的操作
ax = plt.gca()
ax.set_xticks(...)
ax.set_xticklabels(...)
谢谢你指导我。但是,请看上面的编辑,因为我还没有到那里。@Harv先生,我看到问题了。我已经更新了我的答案
ax = plt.gca()
ax.set_xticks(...)
ax.set_xticklabels(...)