我试图在matplotlib中插入另一个imshow情节。
我有一个数字在顶部有一个情节,在底部有一个imshow:
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
plt.plot()
ax2 = fig.add_subplot(2,1,2)
plt.imshow()
然后我有另一个数字,它也包括一个顶部的情节和下面的一个imshow。我希望第二个数字插入第一个数字的顶部情节。
我尝试按照this example。代码运行没有错误,但我在我想要的位置有一个空轴。
我的问题只是因为我不知道在哪里放plt.setp()命令如果那是我应该使用的。
答案 0 :(得分:1)
首先,我不认为你可以在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')
这里的插图使用显式定位,坐标为"数字单位" (整个数字的大小为1比1)。
现在,当然,还有很大的改进空间。您可能希望绘图的宽度相等,因此您必须:
GridSpec
个对象(这样你就可以获得最少的幻数和手动调整)