gpt4 book ai didi

matplotlib - 如何在 basemap 上绘制矩形

转载 作者:行者123 更新时间:2023-12-03 15:16:19 24 4
gpt4 key购买 nike

我正在寻找一种在 basemap 上绘制填充矩形的方法。我可以使用 drawgreatcircle 轻松绘制矩形的边缘方法,但我找不到实际填充这些矩形的方法(指定颜色和 alpha)。

最佳答案

您可以将 matplotlib.patches.Polygon() 直接添加到您的轴。问题是您希望矩形定义绘图坐标(绘图上的直线)还是 map 坐标(绘图上的大圆圈)。无论哪种方式,您都可以在 map 坐标中指定顶点,然后通过调用 Basemap 实例(以下示例中的 m())将它们转换为绘图坐标,自己构建一个 Polygon,然后手动将其添加到要渲染的轴上。

对于在绘图坐标中定义的矩形,这是一个示例:

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

对于 map 坐标中定义的矩形,使用相同的方法,但在转换为绘图坐标之前在 map 空间中插入线。对于每个线段,您必须执行以下操作:
lats = np.linspace( lat0, lat1, resolution )
lons = np.linspace( lon0, lon1, resolution )

然后将这些 map 坐标转换为绘图坐标(如上所述,使用 m() )并再次使用绘图坐标创建一个多边形。

关于matplotlib - 如何在 basemap 上绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com