我希望生成一个底图,然后在这个底图上绘制一些散点图(在jupyter实验室),而不必每次都加载一个新的底图。我遵循了this post中的说明,但是当我添加一个颜色映射时,这个解决方案不再有效,每次绘图时都会添加一个新的颜色条
可复制示例:
单元格1
import matplotlib.pyplot as plt
import pandas as pd
from mpl_toolkits.basemap import Basemap
单元格2
# generate sample data
data = pd.DataFrame({'lat':[53.360967, 53.3290910], 'lon':[-6.2298519, -6.311015], 'values':[0.25, 0.8]})
单元格3
# generate the basemap
%%capture
fig, ax = plt.subplots(figsize=(20,10))
bmap = Basemap(epsg=3857, llcrnrlon=data['lon'][0], llcrnrlat=data['lat'][0],
urcrnrlon=data['lon'][1], urcrnrlat=data['lat'][1], ax=ax)
bmap.arcgisimage(service='ESRI_StreetMap_World_2D', xpixels = 12000, verbose= True)
单元格4
# overlay some data on the basemap
x, y = bmap(list(data['lon']), list(data['lat']))
plot = bmap.scatter(x, y, s=200, marker='o', c=data['values'], cmap='bwr')
cbar = fig.colorbar(plot)
cbar.set_label("Label", rotation=270, labelpad=-10, fontsize=20, weight='semibold')
fig
第一次运行cell4时,我得到了预期的绘图:See here
但是,每次运行该单元格时,都会添加一个新的颜色条See here
有没有解决这个问题的办法,还是有更好的办法
编辑:理想情况下,我希望最后有一个生成底图的函数,还有一个绘制到底图的函数,我可以为同一地图上的不同数据多次调用该函数
最后终于弄明白了。解决方案是使用
matplotlib.cm.ScalarMappable
独立于散点图,用底图生成色条所以单元格3应该是这样的:
然后单元格4现在可以按如下方式运行多次
相关问题 更多 >
编程相关推荐