在背景图上叠加散点图并修改坐标轴范围

1 投票
1 回答
4310 浏览
提问于 2025-04-16 19:33

我有一组地图上的 x,y 坐标,想把它们画在地图的背景图上。

我用下面的代码来显示我的地图:

import matplotlib.pyplot as plt
im=plt.imread('map.gif')
implot=plt.imshow(im,origin='lower')

现在,x 轴和 y 轴的范围是图像的像素值。在我的情况下,这些值是:

im.shape[0] 
545
im.shape[1]
1011

所以,图表的 x 轴从 0 到 1011,y 轴从 0 到 545。

实际上,这张地图的 x 轴范围是从 -100 到 +100,y 轴范围是从 -50 到 50,而我的 x,y 坐标值也是在这个范围内。

我该怎么做才能让图表的 x 轴从 -100 到 +100,而不是从 0 到 1011?然后再把我的 x,y 散点图叠加上去。

1 个回答

1

下面这段代码来自matplotlib网站,展示了一个从-3到3的图形,大家可以看看:

#!/usr/bin/env python
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

delta = 0.025
x = y = np.arange(-3.0, 3.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = Z2-Z1  # difference of Gaussians

im = plt.imshow(Z, interpolation='bilinear', cmap=cm.gray,
                origin='lower', extent=[-3,3,-3,3])

plt.show()

这里面一个很重要的部分是'imshow'函数里的'extent'参数。

撰写回答