2016-08-12 4 views
1

私はPythonで作成されたBasemapに2行を描画しました。各行は2つの点(開始点と終了点)で作成されます。どちらの線も同じ点から始まります。私はこの2行(左下に大きなスライス)の間の領域におけるシェードたい enter image description herePython:Basemapに描画された2行の間のスペースを埋める

:このようなプロットを得

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

。私はそれがfill_between()やfill_betweenx()のいくつかの使用を伴うことを知っていますが、私はそれを理解することはできません。

さらに一般的には、 私は中心点から始まる2本の線を持っています。線はレーダーのスイープ範囲を表します。私は、この掃引範囲に含まれていない領域を埋める必要があります。これは、任意の2つのライン(任意の掃引範囲)で動作する必要があります。もし私たちが必要ならば、掃引の度数で開始と終了の方位角を引き出すこともできます。

ありがとうございました。

答えて

0

Iは楔パッチオブジェクトを使用したレーダ掃引の方位を使用してこれを解決しました。

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

私は、また、 ...私が満たされるために、より大きなスライス(左下)が必要判明...元の質問にmisspoke任意の行のエンドポイントのための彼の鍋のでしょうか?線は常に中央から始まりますが、マップの境界線に沿った任意の点で終わることがあります。 – hm8

+0

明確にするには:私は中心点から始まる2つの線を持っています。線はレーダーのスイープ範囲を表します。私は、この掃引範囲に含まれていない領域を埋める必要があります。これは、任意の2つのライン(任意の掃引範囲)で動作する必要があります。もし私たちが必要ならば、掃引の度数で開始と終了の方位角を引き出すこともできます。 – hm8

関連する問題