Python matplotlib.pyplot.axes()参数

Python matplotlib.pyplot.axes()参数,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,目标是在简单图中插入一个子图,如下所示: 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])

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

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() 
上述代码提供以下输出:

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


最后两个坐标表示sub_图形的大小,我得到了这么多,那么前两个坐标是什么呢?

混乱似乎来自matplotlib使用的不同坐标系。以下是有关该主题的(相当详尽)教程的链接:。我将在这里总结直接影响您的关键点

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

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

在这种情况下,子轴的原点位于相对于地物左下角的
(0.6,0.6)
。其中地物右上角为
(1,1)
。正如预期的那样,子轴仅在地物窗口中间的稍上方和右侧开始

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


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

左下角的坐标?但是左下角的坐标必须是(0.6,0.6)@davidg
plt.setp(子轴)
的要点是什么?坐标在图形空间,而不是数据空间。图的左边缘为x=0,右边缘为x=1。底部和顶部分别相同。因此,无论数据是如何绘制的,您的子轴都将位于图形的右侧和正上方。此问题是否已解决,或者您希望在图形坐标以外的坐标系中指定坐标?如果你对下面的答案感到满意,别忘了接受它。