Python:在底图上绘制的两条线之间填充 space
Python: Fill space between two lines drawn on a Basemap
我在 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])
导致这样的情节:
我想在这两条线之间的区域(左下方较大的切片)添加阴影。我知道它涉及一些 fill_between() and/or fill_betweenx() 的使用,但我无法弄清楚。
更一般地说:
我有两条线从一个中心点开始。这些线表示雷达的扫描范围。我想填写不包括在这个扫描范围内的区域。这需要适用于任何两条线(任何扫描范围)。如果需要的话,我还可以以扫描的度数为单位拉出开始和结束的方位角。
感谢您的帮助。
这是我的解决方案。希望对你有所帮助!
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)
我通过使用楔形补丁对象和雷达扫描的方位角解决了这个问题。
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)
我在 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])
导致这样的情节:
我想在这两条线之间的区域(左下方较大的切片)添加阴影。我知道它涉及一些 fill_between() and/or fill_betweenx() 的使用,但我无法弄清楚。
更一般地说: 我有两条线从一个中心点开始。这些线表示雷达的扫描范围。我想填写不包括在这个扫描范围内的区域。这需要适用于任何两条线(任何扫描范围)。如果需要的话,我还可以以扫描的度数为单位拉出开始和结束的方位角。
感谢您的帮助。
这是我的解决方案。希望对你有所帮助!
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)
我通过使用楔形补丁对象和雷达扫描的方位角解决了这个问题。
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)