Matplotlib - radius at the edges of a polygon - is this possible?

I draw a polygon in matplotlib. I put all the coordinates of the points. Between some points, I would like to have “round” or “radial” edges instead of straight (for example, points 1 and 2 in the figure. Is this possible? If not the most efficient way to draw it?

example drawing

EDIT: Rutger's solution works well.

enter image description here

+6
source share
1 answer

You can use arcs by creating polygons from paths.

Normal square:

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

Rounded square can be done with

 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

In your example, you need to specify an intermediate point that uses the x-coordinate from Point1 and the y-coordinate from Point2.

The matplotlib template tutorial provides a detailed description of ways to create paths: http://matplotlib.org/users/path_tutorial.html

+3
source

Source: https://habr.com/ru/post/955568/


All Articles