使用matplotlib绘制随机形状的补丁

时间:2016-03-12 14:01:30

标签: python matplotlib patch

这是我的目标: 几个不规则形状的椭圆。

http://7xrn7f.com1.z0.glb.clouddn.com/16-3-12/7568305.jpg

我正在考虑将一些随机数生成为顶点位置。

但它只能构建一个多边形。那么,如何绘制几个弧并让它们靠近?

2 个答案:

答案 0 :(得分:2)

要创建任意形状,您需要使用matplotlib.patches.Polygon类,并提供足够的x,y样本,以使其在必要时显示为路径平滑(在一天结束时它仍然是直的当你放大得足够近时的线段。)

如果您只有几个点,则可以使用众多interpolation methods中的一个(例如scipy.interpolate.spline)来创建数据的平滑插值,然后您可以将其输入Polygon构造函数。

以下是使用Polygon类创建圆圈的简单示例,方法是在圆圈周围提供x,y点。

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection

# Circle coordinates (100 points around the circle)
t = np.linspace(0, 2 * np.pi, 100).reshape(100,1)
coords = np.concatenate((np.cos(t), np.sin(t)), axis=1)

ax = plt.axes()

polygons = [];
polygons.append(Polygon(coords))
p = PatchCollection(polygons, alpha=0.4)
ax.add_collection(p)
ax.axis('equal')

enter image description here

答案 1 :(得分:1)

Sonds就像官方文档中的例子一样:

http://matplotlib.org/examples/pylab_examples/ellipse_demo.html

主要部分,他们只是构建一个省略号列表:

compass.app/Contents/Resources/lib/ruby/compass_extensions

......还是我想念你的观点? :)