首页 > 解决方案 > 如何使用 matplotlib 在 for 循环中打印多个多边形

问题描述

我想打印一些多边形(五边形)作为图像。我制作了一个 (4,5,2) 数组,它们是 4 个五边形的坐标。我希望代码在 for 循环中打印 4 个五边形。问题是我的代码在每次运行中只打印一个多边形。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

my_dpi = 100

coord = np.array([[[-150, -200], [300, -200], [300, 0], [150, 200], [-150, 200]],
                  [[-110, -220], [340, -250], [280, 0], [120, 200], [-140, 210]],
                  [[-140, -230], [350, -260], [350, 0], [140, 200], [-180, 220]],
                  [[-180, -240], [370, -270], [370, 0], [170, 200], [-190, 230]]])

for i in range(4):
    i = 0
    geo = coord[i, :, :]

print(coord[i])

polygon = plt.Polygon(coord[i], color='w')
plt.gca().add_patch(polygon)
plt.savefig('figure/%d.jpg' % i, dpi=my_dpi)
i =+ 1    

标签: pythonfor-loopmatplotlib

解决方案


主要问题是print语句在for循环之外,所以它只打印最后一组坐标。我还删除了该i=0行,以便正确打印。下面的代码打印所有坐标。

import numpy as np
import matplotlib.pyplot as plt

my_dpi = 100

coord = np.array([[[-150, -200], [300, -200], [300, 0], [150, 200], [-150, 200]],
                  [[-110, -220], [340, -250], [280, 0], [120, 200], [-140, 210]],
                  [[-140, -230], [350, -260], [350, 0], [140, 200], [-180, 220]],
                  [[-180, -240], [370, -270], [370, 0], [170, 200], [-190, 230]]])

for i in range(4):
    geo = coord[i, :, :]
    print(coord[i])

polygon = plt.Polygon(coord[i], color='w')
plt.gca().add_patch(polygon)
plt.savefig('figure/%d.jpg' % i, dpi=my_dpi)
i =+ 1


推荐阅读