在 matplotlib 中的地块之间保持地图叠加
Keeping map overlay between plots in matplotlib
我正在根据底图在地图上创建一系列 lat/long 散点图。我计划创建数千个具有不同 lat/long 数据的地块。为了节省时间,我只想绘制一次地图叠加层:
map = Basemap(epsg=3395, projection='merc', lat_0=59.45, lon_0=10.5,
resolution = 'h',
llcrnrlon=minlong, llcrnrlat=minlat,
urcrnrlon=maxlong, urcrnrlat=maxlat
map.arcgisimage(service='ESRI_Imagery_World_2D', xpixels=3000, verbose=True)
但是,我找不到在绘制新散点图之前清除之前散点图的方法。
for each set in sets:
x = set[0]
y = set[1]
x,y = map(x,y)
plt.scatter(x,y, s=2.5, alpha=1, color=c, edgecolors='none')
plt.savefig('title.png', format='png', bbox_inches='tight', dpi=500)
如果我执行以下操作:
plt.clf()
或
plt.close()
我必须重新绘制地图。如果我什么都没有,则会绘制上一次迭代的散点图。那么如何删除所有散点图数据,但保留地图数据?
只更改散点图的数据怎么样?
# save an empty scatter plot
scat = plt.scatter([], [], s=2.5, alpha=1, color=c, edgecolors='none')
for each set in sets:
# The data needs to be written as [(x1, y1), (x2, y2), ...]
scat.set_offsets([xy for xy in zip(x, y)])
plt.savefig("...")
我正在根据底图在地图上创建一系列 lat/long 散点图。我计划创建数千个具有不同 lat/long 数据的地块。为了节省时间,我只想绘制一次地图叠加层:
map = Basemap(epsg=3395, projection='merc', lat_0=59.45, lon_0=10.5,
resolution = 'h',
llcrnrlon=minlong, llcrnrlat=minlat,
urcrnrlon=maxlong, urcrnrlat=maxlat
map.arcgisimage(service='ESRI_Imagery_World_2D', xpixels=3000, verbose=True)
但是,我找不到在绘制新散点图之前清除之前散点图的方法。
for each set in sets:
x = set[0]
y = set[1]
x,y = map(x,y)
plt.scatter(x,y, s=2.5, alpha=1, color=c, edgecolors='none')
plt.savefig('title.png', format='png', bbox_inches='tight', dpi=500)
如果我执行以下操作:
plt.clf()
或
plt.close()
我必须重新绘制地图。如果我什么都没有,则会绘制上一次迭代的散点图。那么如何删除所有散点图数据,但保留地图数据?
只更改散点图的数据怎么样?
# save an empty scatter plot
scat = plt.scatter([], [], s=2.5, alpha=1, color=c, edgecolors='none')
for each set in sets:
# The data needs to be written as [(x1, y1), (x2, y2), ...]
scat.set_offsets([xy for xy in zip(x, y)])
plt.savefig("...")