如何使用底图 Python 在背景之上绘制散点图

新手上路,请多包涵

我正在尝试使用底图在背景上绘制散点图。但它正在覆盖背景。如何保留背景?

我正在使用这段代码

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

m = Basemap(projection='merc',llcrnrlat=-80,urcrnrlat=80,llcrnrlon=-180,urcrnrlon=180,lat_ts=20,resolution='c')

m.bluemarble()

x, y = m(list(longitude), list(latitude))
plt.scatter(x,y,1,marker='o',color='Red')
plt.show()

但是一旦我运行散点图,它就会覆盖背景图像。如何在图像上叠加散点图。

原文由 muni 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 817
2 个回答

这是在栅格地图上绘制一系列点的方法。请注意,蓝色大理石图像很大,因此应避免使用全尺寸(1.0 或默认)绘图。该代码基于您的代码。

 import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

# make up some data for scatter plot
lats = np.random.randint(-75, 75, size=20)
lons = np.random.randint(-179, 179, size=20)

fig = plt.gcf()
fig.set_size_inches(8, 6.5)

m = Basemap(projection='merc', \
            llcrnrlat=-80, urcrnrlat=80, \
            llcrnrlon=-180, urcrnrlon=180, \
            lat_ts=20, \
            resolution='c')

m.bluemarble(scale=0.2)   # full scale will be overkill
m.drawcoastlines(color='white', linewidth=0.2)  # add coastlines

x, y = m(lons, lats)  # transform coordinates
plt.scatter(x, y, 10, marker='o', color='Red')

plt.show()

结果图:

在此处输入图像描述

原文由 swatchai 发布,翻译遵循 CC BY-SA 3.0 许可协议

我意识到这是一个老问题,但万一有人来这里遇到和我一样的问题。

诀窍是为散点图提供比 .bluemarble() 更高的 zorder。

 m.scatter(x, y, 10, marker='o', color='Red', zorder=3)

更多信息在这里: https ://matplotlib.org/3.1.0/gallery/misc/zorder_demo.html

原文由 Big Bro 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进