如何在Python中绘制矩形的并集形状

3 投票
1 回答
3102 浏览
提问于 2025-04-17 19:06

我正在使用Matplotlib和Python,想要画出一组矩形的并集。这些矩形可以是相连的,也可以是分开的。我还想给与其他组共有的边缘赋予不同的颜色,前提是这些组之间没有重叠的区域。你有什么想法吗?

谢谢你的帮助。

为了更清楚,我添加了一些代码。我尝试为每组矩形做一个集合,并给它们相同的边缘颜色,但我该如何得到只有一个形状(这组矩形的外边框)呢?

import numpy as np
import matplotlib
from matplotlib.patches import Rectangle
from matplotlib.collections import PatchCollection
import matplotlib.pyplot as plt


fig=plt.figure()
ax=fig.add_subplot(111)
patches = []
ListCollections=[]

while Cd1:
  while Cd2:
      patches += Rectangle((x,y), 400, 200)

  p = PatchCollection(patches, cmap=None)
  p.set_edgecolor('red')
  p.set_facecolor(None)
  ListCollections.append(p)
  patches =[]


for l in ListCollections:
   ax.add_collection(p)

plt.show()

1 个回答

2

看看Shapely这个库吧。里面有一个关于合并的例子,你可以在这个链接找到:http://toblerity.github.com/shapely/manual.html#object.union

如果你想把Shapely的几何图形画出来,可能还需要用到这个工具:https://pypi.python.org/pypi/descartes

最后,如果你一定要用matplotlib来处理合并的事情,我最近实现了一个叫做Cohen-Sutherland裁剪算法,可以用来处理路径。我觉得把一个多边形裁剪到另一个多边形里就等于它们的合并。如果你决定走这条路,我很乐意分享代码(不过你有Shapely,为什么还要这样做呢!)。

撰写回答