我想在不同的子图中绘制矩形(找到下面的代码),但它不起作用。使用数字数组代码可以工作(我得到三个子图),然而,矩形是不同的,我得到两个空子图和一个矩形。关于什么是错的任何想法?谢谢!
n = 3
fig = plt.figure()
for i in xrange(n):
ax = fig.add_subplot(n, 1, i+1)
ax.add_patch(matplotlib.patches.Rectangle((i,0), 100, 100, color="green"))
plt.show()
答案 0 :(得分:2)
在绘制补丁时,Matplotlib不会自动设置轴限制。绘制了示例中的补丁,但第二个和第三个补码的坐标为(1,0)
和(2,0)
,且超出了标准轴限制(0,1)
。
你可以让matplotlib为你做这件事:
ax.relim()
ax.autoscale_view()
或手动完成:
ax.set_ylim((0,110))
ax.set_xlim((0,110))
在这两种情况下,您必须在循环中(即每个轴)和在<{1}}之后。
答案 1 :(得分:1)
您所犯的错误是在(i,0)
部分添加了matplotlib.Patches.Rectangle
。当你这样做时:
对于第一个循环,i
为0,坐标为(0,0)
。
在第二个循环中,i
变为1,因此坐标将变为(1,0)
!这使得矩形的左下角可以采用坐标(1,0)
。
此代码可以使用:
import matplotlib.pyplot as plt
import matplotlib
n = 3
fig = plt.figure()
for i in range(n):
ax = fig.add_subplot(n,1,i+1)
ax.add_patch(matplotlib.patches.Rectangle((0,0), 100, 100, color="green"))
plt.show()
这样做的原因是矩形左下角的坐标总是(0,0)
。这会产生