6

英国の地図の境界線にクリップしたい pylab にプロットがあります。

また、各国の概要を含む一連のパッチも作成しました。1 つはイングランド、もう 1 つはウェールズなどです。

プロットを 1 つのパッチでクリッピングすると、見事に機能します。

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

しかし、もし私がそれを複数の人のためにやろうとすると、何も残らない - 当然のことながら、プロットのどの部分も同時に各国内にあるわけではない.

「OR」タイプのステートメントを使用してクリップする方法を知っている人はいますか? (つまり、このパッチまたはこのパッチ内にある場合はクリップしないでください)。

4

1 に答える 1

8

複数の散布図を作成し、それぞれを固有のパッチ (たとえば、イングランド、アイルランドなど) でクリッピングすることで、これを行うことができると思います。これはあなたが求めていたものではないかもしれませんが、例えば「'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')

パッチ適用前: パッチ適用 ここに画像の説明を入力 後: ここに画像の説明を入力

于 2011-11-14T20:33:12.180 に答える