matplotlib 固定了多个图形之间的标签间距(对齐y轴)

kuuvgm7e  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(417)

我使用的代码大致如下:

import matplotlib.pyplot as plt

labels = ['AAA', 'BBBBBBBBBBBBB', 'CCCCCC', 'DDDDDDDDDD']
values = [0, 2, 2, 5]
fig, ax = plt.subplots(figsize=(8, 0.07 + 0.25 * len(values)))
bars = ax.barh(labels, values, color=colors)

将水平条形图生成为单独的图形,一个接一个:

当标签的宽度在图之间变化时,如何使左 Backbone.js (即黑条)对齐?(除了将渲染的图像向右对齐之外。
我认为左边距/填充/空格应该是固定的,或者栏宽应该是固定的,但是我不知道该怎么做。

zpf6vheq

zpf6vheq1#

在这种情况下,我只是在每个图的左边添加空轴,我相信还有更复杂的方法,但我发现这是最简单的:

  • fig1,在left位置
fig1, ax = plt.subplots(figsize=(8, 1))
ax.barh(['AAA', 'BBBBBBBBBBBBB', 'CCCCCC', 'DDDDDDDDDD'], [0, 2, 2, 5])

# add empty axes at `left` location (unit: fraction of figure width)
left = -0.05  # requires manual adjustment
fig1.add_axes([left, 0, 0, 0.01]).axis('off')

plt.show()

处有空白轴

  • fig2,空白轴位于与fig1
fig2, ax = plt.subplots(figsize=(8, 1))
ax.barh(['AAaaaA', 'BBBB', 'CCCCCC', 'DDDDD'], [2, 8, 7, 1])

# add empty axes at same `left` location as fig1
fig2.add_axes([left, 0, 0, 0.01]).axis('off')

plt.show()

相同的left位置

fig1fig2的输出:

类似的方法是在每个图形的left处使用annotate作为空格字符:

ax.annotate(' ', (left, 0), xycoords='axes fraction', annotation_clip=False)

相关问题