如何在matplotlib中截断子图y轴的超长刻度标签并整齐地适应图形和标签?

1 投票
1 回答
1704 浏览
提问于 2025-06-18 04:05

下面是我的代码。我想要缩短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()

enter image description here

相关问题:

  • 暂无相关问题
暂无标签

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'])

撰写回答