使用matplotlib中的几个补丁剪辑图像

Han*_*Fry 5 python patch matplotlib clip

我在pylab中有一个情节,我想剪辑到英国地图的边界.

我还制作了一系列补丁,其中包含每个国家的大纲:一个用于英格兰,一个用于威尔士等.

剪辑情节一个补丁非常出色:

fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.scatter(x,y,c = z)
ax.add_patch(patch)
im.set_clip_path(patch)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试不止一次,它就没有任何东西 - 可以理解,因为情节的任何部分都不在同一时间内.

有谁知道如何使用'OR'类型语句剪辑?(即,如果在此补丁或此补丁内等,请不要剪辑).

Yan*_*ann 6

我认为你可以通过制作多个散点图来做到这一点,用一个独特的补丁剪裁每一个(例如一个有英格兰,一个有爱尔兰等).虽然这可能不是你要求的,即"有人知道如何使用'OR'类型语句进行剪辑吗?",它应该具有相同的效果:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches

np.random.seed(101)
x = np.random.random(100)
y = np.random.random(100)

fig = plt.figure()
ax = fig.add_subplot(111)
imForEngland = ax.scatter(x,y)
fig.savefig('beforeclip.png')
imForWales = ax.scatter(x,y)
england = patches.Circle((.75,.75),radius=.25,fc='none')
wales = patches.Circle((.25,.25),radius=.25,fc='none')
ax.add_patch(england)
ax.add_patch(wales)
imForEngland.set_clip_path(england)
imForWales.set_clip_path(wales)

fig.savefig('afterclip.png')
Run Code Online (Sandbox Code Playgroud)

补丁之前: 在此输入图像描述 补丁后: 在此输入图像描述