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)

Rounded square can be done with
verts = [(0.2, 0.0), (0.8, 0.0),

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
source share