2011-11-14 21 views
5

İngiltere'nin bir haritasının sınırlarını çizmek istediğim pylab'da bir çizimim var. bir yama zekice çalışır İngiltere için biri, vbMatplotlib'de çeşitli lekeler kullanarak bir görüntüyü klipsleyin

Galler biri arsa Kırpma:

Ben de her ülkenin hatlarını ihtiva yamalar bir dizi yaptık

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

Ama eğer birden fazla için dener ve yaparsam, anlaşılır bir şey yok - çünkü anlaşmazlığın hiçbir kısmı aynı ülke içinde değil.

'VEYA' türü ifadesini kullanarak nasıl klip oluşturabileceğimi bilen var mı? (yani, bu yama içinde veya bu vb içinde klip yapmayın).

+0

Yamalarla çalışılmadım, ancak birlikte eklenebilecekleri bir yol var mı? –

+0

Tesadüfen, bir haritayı gerektiren bir şey yapıyorsanız, haritalar çizmeye yönelik bir matplotlib uzantısı olan basemap'ı bulduğunuzu farz ediyorum. –

+0

Teşekkür ederim Thomas - evet, baz harita buldum. Coğrafi konum noktaları/ülke içi akışları vb. Düzenlemek için harikadır ve aslında bu örnekte iyi çalışır. Byt, henüz harita sınırları ile hizalanabilen KDE'lerin nasıl çizileceği üzerine çalışmadım ve daha genel bir çözüm arayışındaydım. –

cevap

6

Bunu, birden çok dağılım grafiği oluşturarak, her birini benzersiz bir yamayla (örneğin, İngiltere, biri İrlanda, vb.) Kırparak yapabilirsin. Bu ne için sorulan olmayabilir rağmen, yani "herkes bir 'VEYA' tipi deyimi kullanarak klibi nasıl biliyor mu?", aynı etkiye sahip olmalıdır: yamalar önce

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') 

: enter image description here Yamalardan sonra:

+0

Teşekkürler Yann! İyi fikir. –

+0

Sorun değil @ hannah-fry, "cevabını" düşünürseniz, lütfen soldan kontrol edin. Aksi halde, birileri size daha spesifik bir cevap verebilir. – Yann