【问题标题】:Keeping map overlay between plots in matplotlib在 matplotlib 中的绘图之间保持地图叠加
【发布时间】:2017-02-17 12:51:50
【问题描述】:

我正在根据底图在地图上创建一系列纬度/经度散点图。我计划用不同的纬度/经度数据创建数千个图。为了节省时间,我只想绘制一次地图叠加层:

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

我必须重新绘制我的地图。如果我没有任何东西,则会绘制上一次迭代的散点图。那么如何删除所有散点图数据,但保留地图数据?

【问题讨论】:

    标签: python matplotlib matplotlib-basemap


    【解决方案1】:

    改变散点图的数据怎么样?

    # 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("...")
    

    【讨论】:

    • 谢谢您,在执行您的建议时,我收到以下错误:scat, = plt.scatter([],[], s=2.5, alpha=1, color=c, edgecolors='none') TypeError: 'PathCollection' object is not iterable
    • 不要使用逗号。 scat = plt.scatter(...)
    猜你喜欢
    • 2020-04-07
    • 2012-09-03
    • 2022-01-27
    • 2019-10-24
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多