Matplotlib散点图在地理地图,隐藏背景

时间:2018-05-10 05:21:58

标签: python-3.x matplotlib

我试图在OpenMaps地图上绘制一个x和y值列表的散点图,主要问题是当我生成地图时,散点图显示并且地图不是,如果我切换散射的顺序并显示反转为真,地图显示但不显示散射。我试图摆弄宽高比和zorder没有发生变化。

图片在代码的下方,输出散布没有显示地图,任何帮助都会非常感激,我尝试了一些类似的stackoverflow帖子的解决方案,但到目前为止没有一个工作,我的怀疑是散点图以白色背景在地图顶部绘制。

def function(x):
y = []
z = []

#Create two lists of matching lat and long coordinates
for i in x:
    y.append(i[1])
    z.append(i[2])

#Turn off axis and axis ticks
plt.tick_params(labelbottom='off', labelleft='off', bottom='off', left='off')
plt.title("Bird Sightings")

#import map Image
img = mpimg.imread('map.png')

# MAP_EXTENT is (149.105, 149.130, -35.29, -35.27), variable set at top
plt.imshow(img, zorder=0, extent=MAP_EXTENT)

plt.scatter(z, y, zorder=1)

#aspect=img.shape[0]/float(img.shape[1])*((MAP_EXTENT[1]-MAP_EXTENT[0])/(MAP_EXTENT[3]-MAP_EXTENT[2]))
#plt.gca().set_aspect(aspect)

#plt.savefig('pic.png', dpi=980)
plt.show()

Scatter No Map

2 个答案:

答案 0 :(得分:1)

我的建议是使用mplleaflet库。使用非常简单,您只需要以度为单位提供节点的坐标。看一看。

import matplotlib.pyplot as plt
import mplleaflet
from random import randint


fig, ax = plt.subplots()
x = [randint(-10100, -9400)/100 for i in range(30)]
y = [randint(3700, 4000)/100 for i in range(30)]
ax.plot(x, y, 'bo')
mplleaflet.display(fig=fig)

enter image description here

答案 1 :(得分:0)

我发现了这个问题,我正在绘制的数据远远超出了图像的受限坐标范围,因此图像没有显示在散点坐标处,因为它不在这些边界内。 / p>