Baz haritadaki kontur çizgilerini çizmek için bazı meteorolojik veriler üzerinde çalışıyorum. Daha önce yaptığım tam çalışma örneği kodu burada How to remove/omit smaller contour lines using matplotlib. Tüm işler iyi ve ben kontur komplo ile şikayet etmiyorum. Bununla birlikte, belirli bir bölge üzerindeki tüm kontur hatlarını bir ana harita üzerinde (düzensiz lat & lon) gizlemek zorunda olduğum özel bir durum söz konusudur.Basemap üzerindeki belirli bir alandan kontur çizgileri/verileri nasıl gizlenir
Düşünebildiğim tek olası çözüm, istenen bölgeye bir ploygon çizgisi çizmek ve Basemap ile aynı rengi doldurmaktır. Aramanın sürü sonra ben kısmen iş gibi görünüyor bu linki How to draw rectangles on a Basemap (aşağıdaki kodu)
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
def draw_screen_poly(lats, lons, m):
x, y = m(lons, lats)
xy = zip(x,y)
poly = Polygon(xy, facecolor='red', alpha=0.4)
plt.gca().add_patch(poly)
lats = [ -30, 30, 30, -30 ]
lons = [ -50, -50, 50, 50 ]
m = Basemap(projection='sinu',lon_0=0)
m.drawcoastlines()
m.drawmapboundary()
draw_screen_poly(lats, lons, m)
plt.show()
bulundu. Ancak, düzensiz bir bölge çizmek istiyorum.
Herhangi bir çözüm için teşekkür ederiz.
Düzenleme: sorun olduğu 1
ben anlamış. Poligon bölgesi içinde doldurulan herhangi bir rengin (yüz rengi), onu aşağıda herhangi bir şeyi gizlemediği görülüyor. Her zaman sadece şeffaftır, kullanılan alpha
değerinden bağımsız olarak. Sorunu açıklamak için, üç bölgeye sahip olan görüntüyü kırptım. çevre, bölge bölgesi ve çokgen bölgesi. Poligon bölgesi kırmızı renkle doldurulur, ancak görebildiğiniz gibi, kontur çizgileri daima görünürdür. Yukarıdaki kodda kullanmış olduğum satır şu şekildedir: -
poly = Polygon(xy, facecolor='red', edgecolor='b')
Bu nedenle sorun yukarıdaki kodla ilgili değildir. Poligon dolgusuyla problem gibi görünüyor. Ama yine de bu sorun için bir çözüm yok. Ortaya çıkan görüntü (Kırpılmış resim) (ekli görüntünün altında benim 2 düzenlemeyi bakınız) aşağıda verilmiştir: -
Düzenleme 2: madenin benzer gereksinimi vardır bu http://matplotlib.1069221.n5.nabble.com/Clipping-a-plot-inside-a-polygon-td41950.html den çıkarak ipucu Bazı verileri kaldırabilirim. Ancak, kaldırılan veriler, yalnızca bunun yerine çokgen bölgesinin dışından gelir. İşte gelen ipucu kodu almış olduğu: - Şimdi
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import RegularPolygon
data = np.arange(100).reshape(10, 10)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.contourf(data)
poly = RegularPolygon([ 0.5, 0.5], 6, 0.4, fc='none',
ec='k', transform=ax.transAxes)
for artist in ax.get_children():
artist.set_clip_path(poly)
benim soru ne komut o poligon bölge içinde verilerin çıkarılması için kullanılır mı?
teslim bir çokgen dorukların çalışmıyor? – tacaswell
Gecikme için özür dilerim. Tüm lat ve lonları sağladıktan sonra çalışır. Ancak kullandığım taban haritası rengi beyaz/renksiz. Verdiğim zaman poligon rengini 'beyaz' olarak kullanarak bu komutu kullanarak 'poly = Polygon (xy, facecolor = 'white')' sonra arkasındaki veri/kontur çizgilerini gizlemez. Temel olarak 'beyaz' rengi şeffaftır. Kod çalışır, ancak sorun şu anda renkle. –
Ekran resmimle sorumu güncelledim. –