我刚刚发现了一种很好的方法来创建一个剪裁到任意多边形区域的Matplotlib填充轮廓图.该方法需要调用set_clip_path(patch)Matplotlib contourf()函数返回的QuadContourSet中的每个PathCollection实例.MWE:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as mpatches
import matplotlib.path as mpath
# some arbitrary data to plot
xx, yy = np.meshgrid(np.linspace(-5, 5, 20), np.linspace(-10, 10, 20), copy=False)
zz = np.sqrt(xx ** 2 + yy ** 2)
poly_verts = [
(0, 0),
(-4, 7),
(-4, -7),
(4, -7),
(4, 7),
(0, 0)
]
poly_codes = [mpath.Path.MOVETO] + (len(poly_verts) - 2) * [mpath.Path.LINETO] +
mpath.Path.CLOSEPOLY]
# create a Path from the polygon …Run Code Online (Sandbox Code Playgroud) 我目前正在用Python和matplotlib实现一些东西.我知道如何绘制多边形以及如何填充多边形,但如何填充多边形内部以外的所有内容?为了更清楚,我想修改下面的结果,使用axhspan's和axvspan's,通过剪切水平和垂直的红线来获得一个红色矩形(外面的所有部分都是阴影线):
