2016-08-12 55 views
1

我在用python創建的底圖上繪製了兩條線。每條線都有兩個點(起點和終點)。兩條線都來自同一點。Python:填充底圖上繪製的兩條線之間的空間

m = Basemap(llcrnrlon=119.46,llcrnrlat=21.62,urcrnrlon=121.406,urcrnrlat=23.43, resolution = 'i', epsg=3825) 
m.drawcoastlines() 
m.plot([x, x1], [y, y1]) 
m.plot([x, x2], [y, y2]) 

所得在這樣的曲線圖: enter image description here

我想(左下方較大切片)色光的區域這兩條線之間。我知道它涉及fill_between()和/或fill_betweenx()的一些用法,但我無法弄清楚。

更一般地說: 我有兩條線源於一箇中心點。這些線代表雷達的掃描範圍。我想填寫不包含在此掃描範圍內的區域。這需要適用於任何兩行(任何掃描範圍)。如果我們需要的話,我還可以以掃描的角度拉出開始和結束的方位角。

感謝您的幫助。

回答

0

我通過使用楔補丁對象並使用雷達掃描的方位解決了這個。

fig, ax = plt.subplots() 
m = Basemap(llcrnrlon=119.46,llcrnrlat=21.62,urcrnrlon=121.406,urcrnrlat=23.43, resolution = 'i', epsg=3825) 
m.drawcoastlines() 
wedge = Wedge((x,y), 200000, az2, az1, edgecolor="none", color = 'grey', alpha = 0.2) 
ax.add_patch(wedge) 
0

這是我的解決方案。希望它有幫助!

from matplotlib.patches import Polygon 

m = Basemap(llcrnrlon=119.46,llcrnrlat=21.62,urcrnrlon=121.406,urcrnrlat=23.43, resolution = 'i', epsg=3825) 
m.drawcoastlines() 

x,y = (119.46 + 121.406)/2.0,(21.62+23.43)/2.0 
x1,y1 = 120.0,24.0 
x2,y2 = 124.0,22.0 
lons = np.array([x1,x, x2, x2,x1]) 
lats = np.array([y1, y, y2, y1,y1]) 
x, y = m(lons, lats) 
xy = zip(x,y) 
poly = Polygon(xy, facecolor='b', alpha=0.75 ,edgecolor = 'r', zorder =15,linewidth = 2) 
plt.gca().add_patch(poly) 
m.drawparallels(np.arange(21.0,24.0,0.5),labels=[1,0,0,1],size=12,linewidth=0,color= '#FFFFFF') 
m.drawmeridians(np.arange(119.8,121.5,0.5),labels=[1,0,0,1],size=12,linewidth=0) 

enter image description here

+0

我在原來的問題說錯......原來我需要更大的切片(左下)在... 還可以填充,將他的炒鍋任何獨斷專行的終點?線條始終始於中心,但可能會沿着地圖邊界的任何點結束。 – hm8

+0

澄清:我有兩條線源於中心點。這些線代表雷達的掃描範圍。我想填寫不包含在此掃描範圍內的區域。這需要適用於任何兩行(任何掃描範圍)。如果我們需要的話,我還可以以掃描的角度拉出開始和結束的方位角。 – hm8

相關問題