python - 如何使用 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()
解决方案
我无法截断用于标签的字段,因为这样数据将不正确地聚合。
默认情况下,pandas 使用索引来设置刻度标签。但是,您可以创建另一列截断标签,然后告诉 pandas 使用它来设置 y-tick 标签。
q3.plot(kind='barh', ..., yticks=q3['my_column_with_truncated_strings'])
或者,您可以直接使用 matplotlib:
axes[0,0].set_yticklabels(q3['my_column_with_truncated_strings'])
推荐阅读
- ajax - 使用 genymotion 模拟器的问题服务器请求
- vba - 删除 PPT 演示文稿中的所有内容,但图表?
- c - 单个大规模阵列单元动态分配,表现为具有多个较小单元的阵列
- tkinter - 格式化字符串中的 Python 3 MySQL sql 语法错误
- c++ - 通过指向该对象的指针更改对象数据成员的值
- networking - UDP数据包丢失
- sql - 当我在 oracle 中编译包过程时,我收到错误消息“编译错误成功”如何解决这个问题?
- javascript - 如果变量被 js 更改,js 会捕获
- excel - VBA - 复制和粘贴数据时出现内存不足错误
- sprite-kit - PhysicsBody 覆盖半个精灵