如何在matplotlib中截断子图y轴的超长刻度标签并整齐地适应图形和标签?
下面是我的代码。我想要缩短y轴上的标签文字。我不能直接缩短用来做标签的字段,因为那样数据会聚合得不正确。我需要缩短用于标签的字符串。比如说,每个字符串的前100个字符。我该如何在每个子图中以这种方式进行缩短,以便能够整齐地显示所有标签和子图在同一个图形中呢?
fig, ax = plt.subplots(2,2, sharex = True, figsize=(15,10))
a = q3[:10].plot(kind='barh',stacked=True,colormap='Reds',rot=0, legend = None, ax = ax[0,0])
b = q1[:10].plot(kind='barh',stacked=True,colormap='Reds',rot=0, legend = None,ax = ax[0,1])
c = q4[:10].plot(kind='barh',stacked=True,colormap='Reds',rot=0, legend = None,ax = ax[1,0])
d = q2[:10].plot(kind='barh',stacked=True,colormap='Reds',rot=0, legend = None,ax = ax[1,1])
plt.show()
相关问题:
- 暂无相关问题
1 个回答
1
我不能截断用作标签的字段,因为那样数据会聚合得不正确。
默认情况下,pandas会使用索引来设置刻度标签。不过,你可以创建一个新的列,里面放的是截断后的标签,然后告诉pandas用这个列来设置y轴的刻度标签。
q3.plot(kind='barh', ..., yticks=q3['my_column_with_truncated_strings'])
另外,你也可以直接使用matplotlib:
axes[0,0].set_yticklabels(q3['my_column_with_truncated_strings'])