gpt4 book ai didi

python - matplotlib - 多边形边缘的半径 - 这可能吗?

转载 作者:太空狗 更新时间:2023-10-30 00:07:31 25 4
gpt4 key购买 nike

我在 matplotlib 中绘制多边形。我输入了所有点的坐标。在某些点之间,我希望有“圆形”或“径向”边缘而不是直线(例如绘图上的点 1 和 2。这可能吗?如果不是,最有效的绘制方法是什么?

example drawing

编辑:Rutger 的解决方案效果很好。

enter image description here

最佳答案

您可以通过从路径创建多边形来使用圆弧。

一个普通的正方形:

import matplotlib.path as mpath
import matplotlib.patches as patches

verts = [(0,0),
(1,0),
(1,1),
(0,1),
(0,0)]

codes = [mpath.Path.MOVETO] + (len(verts)-1)*[mpath.Path.LINETO]
square_verts = mpath.Path(verts, codes)

fig, ax = plt.subplots(subplot_kw={'aspect': 1.0, 'xlim': [-0.2,1.2], 'ylim': [-0.2,1.2]})

square = patches.PathPatch(square_verts, facecolor='orange', lw=2)
ax.add_patch(square)

enter image description here

圆角正方形可以用:

verts = [(0.2, 0.0),
(0.8, 0.0), # start of the lower right corner
(1.0, 0.0), # intermediate point (as if it wasn't rounded)
(1.0, 0.2), # end point of the lower right corner
(1.0, 0.8), # move to the next point etc.
(1.0, 1.0),
(0.8, 1.0),
(0.2, 1.0),
(0.0, 1.0),
(0.0, 0.8),
(0.0, 0.2),
(0.0, 0.0),
(0.2, 0.0)]

codes = [mpath.Path.MOVETO,
mpath.Path.LINETO,
mpath.Path.CURVE3,
mpath.Path.CURVE3,
mpath.Path.LINETO,
mpath.Path.CURVE3,
mpath.Path.CURVE3,
mpath.Path.LINETO,
mpath.Path.CURVE3,
mpath.Path.CURVE3,
mpath.Path.LINETO,
mpath.Path.CURVE3,
mpath.Path.CURVE3]


rounded_verts = mpath.Path(verts, codes)

fig, ax = plt.subplots(subplot_kw={'aspect': 1.0, 'xlim': [-0.2,1.2], 'ylim': [-0.2,1.2]})

rounded_verts = patches.PathPatch(rounded_verts, facecolor='orange', lw=2)
ax.add_patch(rounded_verts)

enter image description here

对于您的示例,您需要指定一个中间点,它使用 Point1 的 x 坐标 和 Point2 的 y 坐标

matplotlib 路径教程详细描述了如何创建路径: http://matplotlib.org/users/path_tutorial.html

关于python - matplotlib - 多边形边缘的半径 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19270673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com