在Python中绘制不同子图中的矩形

时间:2014-12-03 08:54:05

标签: python matplotlib

我想在不同的子图中绘制矩形(找到下面的代码),但它不起作用。使用数字数组代码可以工作(我得到三个子图),然而,矩形是不同的,我得到两个空子图和一个矩形。关于什么是错的任何想法?谢谢!

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()

2 个答案:

答案 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)。这会产生enter image description here