底图相当于 Matplotlib 的底图"ax1.add_collection(mylinecollection)"是多少?



我正在从关系数据库中提取纬度/经度。这些点是线段的顶点,数据库表的组织方式使得可以根据线号对点进行分组,并根据点顺序号对点进行排序。具体而言,数据库表具有以下字段:纬度、经度、line_number pt_order_number。

我已将所有线段拉入线集合中。它使用 Matplotlibax1.add_collection(mylinecollection)按预期绘制。请注意,我使用了线集合而不是ax1.plot(long,lat)循环,因为某些数据集具有数千行和数万个点(行集合更快、更干净)。

但是,我需要使用底图绘制这些线集合(以便我有一个漂亮的阴影浮雕和比例尺)。底图无法通过.add_collection(),我不确定替代方案是什么。我在底图教程中找不到答案或明显的替代方法(但也许我错过了)。感谢您的任何帮助。

当前代码:

# note linecollection variable produced in function; performs as expected with "ax1.add_collection(linecollection)"
latitude_range = [34.012965603200001, 34.721878621999998]
longitude_range = [-116.76151759999999, -116.33691841200002]
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from mpl_toolkits.basemap import Basemap
south, north = latitude_range[0], latitude_range[1]
west, east = longitude_range[0], longitude_range[1]
center = [(east+west)/2, (north+south)/2]
m = Basemap(llcrnrlon=west, llcrnrlat=south, urcrnrlon=east, urcrnrlat=north,
resolution='c', epsg=4326,
lon_0=center[0], lat_0=center[1])
m.arcgisimage(service = "World_Shaded_Relief", xpixels = 2000)
m.add_collection(linecollection) # throws error "AttributeError: 'Basemap' object has no attribute 'add_collection'"
plt.show()

提供上面的注释作为答案:

底图使用轴:

fig, ax = plt.subplots()
m = Basemap(..., ax=ax) 

在此轴上,您可以调用任何您喜欢的方法,例如

ax.add_collection(...)

确保首先将线集合的坐标转换为底图单位。

相关内容

  • 没有找到相关文章

最新更新