gpt4 book ai didi

python - matplotlib.pyplot.axes() 参数混淆

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:22 25 4
gpt4 key购买 nike

目标是在简单图中插入子图,如下所示:

import numpy as np
from matplotlib import pyplot as plt
X = np.linspace(-6, 6, 1024)
Y = np.sinc(X)
X_detail = np.linspace(-3, 3, 1024)
Y_detail = np.sinc(X_detail)
plt.plot(X, Y, c = 'k')
sub_axes = plt.axes([0.6,0.6,0.25,0.25])
sub_axes.plot(X_detail, Y_detail, c = 'k')
plt.setp(sub_axes)
plt.show()

上面的代码给出以下输出:

enter image description here

matplotlib 文档表示,matplotlib.pyplot.axes() 函数采用的参数是一个定义为 rect=[left, Bottom, width, height] 的列表,其中坐标left、bottom、width、height 添加为标准化(0,1) 值。谁能向我解释一下吗?

最后两个坐标是子图的大小,我就知道了,现在前两个坐标是怎么回事?

最佳答案

困惑似乎来自 matplotlib 使用的不同坐标系。以下是有关该主题的(相当详尽的)教程的链接:https://matplotlib.org/users/transforms_tutorial.html 。我在这里总结一下对你有直接影响的关键点。

您在轴上看到的坐标称为 data space or data coordinates 。这基本上是图的 xlim 和 ylim。请注意,这两个图完全独立,并且不受图形大小或位置的影响。

当您说sub_axes = plt.axes([0.6,0.6,0.25,0.25])时,您正在指定图形空间或图形坐标中的坐标。这在概念上与axis space or axis coordinates非常相似。 ,只不过它适用于整个图形而不仅仅是一组单独的轴。

在本例中,子轴的原点位于相对于图形左下角的(0.6, 0.6)图形。其中图形的右上角是(1, 1)。正如预期的那样,子轴从图形窗口中间的上方和右侧开始。

同样,宽度为 (0.25, 0.25),这意味着子轴在每个维度上都是图形大小的 1/4。这也可以解释为子轴的右上角位于图形空间中的(0.85, 0.85),看起来大约是正确的。

你可以做一些测试。无论您如何平移或缩放主轴,子轴都不会受到影响。但是,如果您调整图形大小,两组轴都会更改大小以进行补偿。由于您调整子轴大小的方式,子轴应始终具有与图形本身相同的纵横比。

关于python - matplotlib.pyplot.axes() 参数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com