首先,我认为你不能在matplotlib
中将一个图形放入另一个图形中。您需要安排您的Axes
对象(子图)以实现所需的外观。
您提供的示例使用绝对定位来完成此操作。setp
与定位无关,它只是从插图中删除轴刻度。以下是可实现您要求的代码示例:
import numpy
import matplotlib.pyplot as plt
x = numpy.linspace(0, 1)
xx, yy = numpy.meshgrid(x, x)
im = numpy.sin(xx) + numpy.cos(yy)**2
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(x, x**2)
ax2 = fig.add_subplot(2,1,2)
ax2.imshow(im)
inset1 = fig.add_axes([.15, .72, .15, .15])
inset1.plot(x, x**2)
plt.setp(inset1, xticks=[], yticks=[])
inset2 = fig.add_axes([0.15, 0.55, .15, .15])
inset2.imshow(im)
plt.setp(inset2, xticks=[], yticks=[])
fig.savefig('tt.png')
![输入图像描述](https://istack.dev59.com/RYEef.webp)
这里的插图使用了“图形单位”显式定位坐标(整个图形大小为1乘1)。
当然,还有很多地方需要改进。您可能希望绘图的宽度相等,因此您需要:
- 明确指定所有子图的定位;或者
- 调整长宽比;或者
- 使用两个
GridSpec
对象(这样您将拥有最少的魔术数字和手动调整)