首页 > 解决方案 > 转换方法 transFigure 如何放置我的文本?

问题描述

我在理解 Matplotlib 图中文本位置的不同转换时遇到了问题。存在三个预定义的转换:

ax.transData, ax.transAxes,fig.transFigure

当我有以下代码时:

fig, ax = plt.subplots(facecolor='lightgray')
ax.axis([0, 10, 0, 10])
ax.text(1, 5, ". Data: (1, 5)", transform=ax.transData)
ax.text(0.2, 0.2, ". Figure: (0.2, 0.2)", transform=fig.transFigure)

没看懂第四行。第一个问题:我的情节中的 figsize 是什么?

我检查了文档字符串,plt.figure它说默认的 figsize 是 6.4(以英寸为单位的宽度)和 4.8(以英寸为单位的高度)。但是当我使用时fig.get_figwidthfig.get_figheight我看到宽度是 6.0 和宽度 4.0。为什么?假设 figsize 为 (6, 4):文本应出现在 figsize(x 坐标)的 20% 和 figsize(y 坐标)的 20% 处。那是对的吗?

标签: matplotlibtransform

解决方案


我检查了 plt.figure 的文档字符串,它说默认的 figsize 是 6.4(以英寸为单位的宽度)和 4.8(以英寸为单位的高度)。

确实,您可以检查源代码,其中显示[6.4, 4.8]

但是当我使用 fig.get_figwidth 和 fig.get_figheight 时,我看到宽度是 6.0 和宽度 4.0。为什么?

因为您,您使用的解释器或您已加载的另一个库已经更改了这些设置。

假设 figsize 为 (6, 4):文本应出现在 figsize(x 坐标)的 20% 和 figsize(y 坐标)的 20% 处。那是对的吗?

对,那是正确的。坐标从图的左下角开始。

在此处输入图像描述


推荐阅读