python - 如何在不改变绘图的情况下更改 matplotlib 中的图形 Canvas 大小?

标签 python matplotlib

我想在 matplotlib 中用面板标签(“A”、“B”、...)来注释我正在制作的图形面板。例如,我想用一个大的“A"在图的左上角,如下面的代码所示。如何更改图 Canvas 以使这个“A”可见?

f = plt.figure(figsize=(5,5))
plt.subplot(2, 2, 1)
# this "A" is clipped in the plot
plt.annotate("A",
             xy = (-0.25, 1.1),
             xytext = (-0.25, 1.1),
             xycoords = 'axes fraction',
             textcoords = 'axes fraction',
             fontsize=30)
plt.subplot(2, 2, 2)
plt.subplot(2, 2, 3)
plt.subplot(2, 2, 4)
plt.tight_layout()
plt.show()

how to make room for text label by increasing padding around subplots?

有没有办法在子图的左侧添加“填充”,以便在不更改 figsize 参数的情况下将它们推到图形的右侧?并且不重新调整地 block ? Canvas 中有足够的空间来容纳标签和子图。

最佳答案

添加plt.subplots_adjust():

f = plt.figure(figsize=(5,5))
plt.subplot(2, 2, 1)
# this "A" is clipped in the plot
plt.annotate("A",
             xy = (-0.25, 1.1),
             xytext = (-0.25, 1.1),
             xycoords = 'axes fraction',
             textcoords = 'axes fraction',
             fontsize=30)
plt.subplot(2, 2, 2)
plt.subplot(2, 2, 3)
plt.subplot(2, 2, 4)
plt.tight_layout()
plt.subplots_adjust(top=0.9)
plt.show()

请确保不要将 plt.tight_layout 放在 plt.subplots_adjust 之后,因为这会覆盖更改。

另见 this 关于调整子图的页面。

使用上述代码生成的图形如下所示: enter image description here

关于python - 如何在不改变绘图的情况下更改 matplotlib 中的图形 Canvas 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446970/

相关文章:

python - 显示具有非常不均匀的 bin 宽度的直方图

Python:像二维数组一样从字典中提取数据

python - mailgun 发送内联图像不起作用?

python - 将 matplotlib quiver 和 elipses 结合起来不起作用

python - 如何使用 set_cmap 设置 yt.SlicePlot 的颜色条限制?

matplotlib - 如何使用 pandas.DataFrame.boxplot 的返回值?

python - 如何使 Matplotlib 散点图作为一个整体透明?

python - os.path.join 是否有 Pathlib 替代品?

python - 如何将 Pandas 数据框中带逗号的字符串数字转换为 float

python - Axes3D.text() 注释 3D 散点图