将行和列标题添加到 matplotlib
中循环生成的子图网格的最佳做法是什么?我能想到一对,但不是特别整洁:
- 对于列,您可以使用循环计数器
set_title()
仅用于第一行。对于行,这不起作用。您必须在地块之外绘制text
。 - 您在顶部添加一行额外的子图,在左侧添加一列额外的子图,并在该子图的中间绘制文本。
你能建议一个更好的选择吗?
原文由 gozzilli 发布,翻译遵循 CC BY-SA 4.0 许可协议
将行和列标题添加到 matplotlib
中循环生成的子图网格的最佳做法是什么?我能想到一对,但不是特别整洁:
set_title()
仅用于第一行。对于行,这不起作用。您必须在地块之外绘制 text
。你能建议一个更好的选择吗?
原文由 gozzilli 发布,翻译遵循 CC BY-SA 4.0 许可协议
以上答案有效。只是在答案的第二个版本中,你有:
for ax, row in zip(axes[:,0], rows):
ax.annotate(col, xy=(0, 0.5), xytext=(-ax.yaxis.labelpad-pad,0),
xycoords=ax.yaxis.label, textcoords='offset points',
size='large', ha='right', va='center')
代替:
for ax, row in zip(axes[:,0], rows):
ax.annotate(row,xy=(0, 0.5), xytext=(-ax.yaxis.labelpad-pad,0),
xycoords=ax.yaxis.label, textcoords='offset points',
size='large', ha='right', va='center')
原文由 Alan Shteyman 发布,翻译遵循 CC BY-SA 3.0 许可协议
1 回答10k 阅读✓ 已解决
2 回答4k 阅读✓ 已解决
3 回答4.7k 阅读
4 回答1.7k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
4 回答1.8k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
有几种方法可以做到这一点。简单的方法是利用绘图的 y 标签和标题,然后使用
fig.tight_layout()
为标签腾出空间。或者,您可以使用annotate
将附加文本放置在正确的位置,然后半手动地为其腾出空间。如果您的轴上没有 y 标签,则很容易利用轴的第一行和第一列的标题和 y 标签。
如果您确实有 y 标签,或者如果您希望更灵活一些,则可以使用
annotate
来放置标签。这更复杂,但除了行和列标签之外,您还可以拥有单独的绘图标题、ylabels 等。