matplotlib日常练习(4)

Path 的应用

import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches

# Define the points along with first curve to be drawn
verts1 = [(-1.5, 0.),        # left, bottom
          (0., 1.),          # left, top
          (1.5, 0.),         # right, top
          (0., -1.0),        # right, bottom
          (-1.5, 0.)]        # ignored
# How to draw the plot along above points
codes1 = [Path.MOVETO,       # Go to first point specified in vert1
         Path.LINETO,        # Draw a line from first point to second point
         Path.LINETO,        # Draw another line from current point to next point
         Path.LINETO,        # Draw another line from current point to next point
         Path.CLOSEPOLY]     # Close the loop
# Create complete path with points and lines/curves
path1 = Path(verts1, codes1)
# Repeat the same for 2nd curve
verts2 = [(-1.5, 0.),        # left, bottom
          (0., 2.5),         # left, top
          (1.5, 0.),         # right, top
          (0., -2.5),        # right, bottom
          (-1.5, 0.)]        # ignored
codes2 = [Path.MOVETO,       # Move to the first point
          Path.CURVE3,       # Curve from first point along the control point(2nd point) and terminate on end point(3rd)
          Path.CURVE3,       # Curve from current point along the control point(next point) and terminate on end point(next)
          Path.CURVE3,
          Path.CURVE3]       # close by the curved loop
path2 = Path(verts2, codes2)
# Define the figure
fig = plt.figure()
ax = fig.add_subplot(111)
# zorder overrides default order of plotting different patches. In this case we want second path to be plotted first and 
# then first patch so that both are visible. Otherwise smaller patch could hide behind larger one
patch1 = patches.PathPatch(path1, lw=4, zorder=2)
ax.add_patch(patch1)
patch2 = patches.PathPatch(path2, facecolor='orange', lw=2, zorder=1)
ax.add_patch(patch2)
# Set the limits for x and y axis
ax.set_xlim(-2,2)
ax.set_ylim(-2,2)
plt.show()

你可能感兴趣的:(matplotlib日常练习(4))