python - Basemap Heat 错误/空 map

标签 python matplotlib matplotlib-basemap imshow

我正在尝试在定义的地理位置上绘制分散的热图。我可以很好地绘制没有背景的普通散点图,但我想将它与给定的纬度和经度结合起来。我得到以下空 map enter image description here .

输入

输入:col[2]col[3]xy 坐标 &地理位置纬度:19.997453,经度:73.789802

000000000023 61.0 19.006113 73.009168 
000000000054 65.0 19.009249 73.000342 
000000000003 19.0 19.001051 73.000080 
000000000012 20.0 19.009390 73.008638 
000000000061 82.0 19.008550 73.003605 
000000000048 86.0 19.006597 73.001057 
00000000005d 60.0 19.003857 73.009618 
000000000006 60.0 19.003370 73.009112 
000000000037 91.0 19.002558 73.000546 
000000000047 32.0 19.006061 73.008239 

程序

from matplotlib import pyplot as plt 
from matplotlib import cm as CM
from matplotlib import mlab as ml
from mpl_toolkits.basemap import Basemap
import numpy as np 

m = Basemap(width=12000000, height=9000000, projection='lcc', 
            resolution='c', lat_0=19.,lon_0=73.)
m.drawcoastlines(linewidth=0.25)

data = np.loadtxt('random_lat_lon_0', unpack=True, 
                  dtype='str, float, float, float')

x  = data[2]
y  = data[3]
z  = data[1]

gridsize = 100 
m.hexbin(x, y, C=z, gridsize=gridsize)

cb = m.colorbar()
#m.set_label('Density')
plt.show()  

没有错误,但我只看到空 map ,但没有数据散点图。

如何修复?谢谢!!

最佳答案

我现在明白了。您正在尝试合并从 here-imshow 收到的答案和 here-hexbin .

您的问题归结为您希望将 basemap 用作绘制 2D 直方图的“ Canvas ”。但是,您不是这样做,而是制作一个 basemap ,然后单独绘制一个 2D 直方图(使用 plt.hexbin,它使您的 basemap 成为一个单独的 Canvas )。

使用m.hexbin 并去掉plt.imshow()。如果你真的想使用 imshow,你需要先单独制作一个二维直方图数组,然后用 imshow 绘制它。下面是我将如何处理 hexbin


编辑:下面我将一些 x、y、z 数据随机化,这样我就可以绘制一个图(并使海岸线更大)。它并不完美,但它显示了绘制的数据。

from matplotlib import pyplot as plt 
from matplotlib import cm as CM
from matplotlib import mlab as ml
from mpl_toolkits.basemap import Basemap
import numpy as np 

m = Basemap(width=12000000, height=9000000, projection='lcc', 
            resolution='c', lat_0=19.,lon_0=73.)
m.drawcoastlines(linewidth=0.25) # I added color='red', lw=2.0

#data = np.loadtxt('inputfile', unpack=True, 
                  dtype='str, int, int, int, int, float')
#
#x  = data[1]
#y  = data[2]
#z  = data[5]
x, y, z = np.random.rand(3, 1000000)
x *= 12e6
y *= 9e6
z *= 20000

gridsize = 100 
m.hexbin(x, y, C=z, gridsize=gridsize, cmap=plt.cm.YlGnBu)

cb = m.colorbar()
m.set_label('Density')
plt.show()

enter image description here

关于python - Basemap Heat 错误/空 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30244710/

相关文章:

python - Seaborn 不使用 %matplotlib 笔记本显示图例

python - 用邻居值替换异常值

python - 循环通过一个函数来绘制几个子图,Python

python - 绘制由散点数据决定颜色的形状文件

python - 如何使用 Keras 调用模块而不导致 Tkinter 菜单崩溃?

python - 如何仅使用循环将 n×m 矩阵转置为新的 m×n 矩阵?

python - 如何将 x Axis 移动 1 以从 1 而不是 0 开始?

python - 如何获取作为 geopandas 数据框导入并在 matplotlib 中绘制的 shapefile 的颜色条?

matplotlib-basemap - Matplotlib basemap 工具包安装问题

python - 将格式化和突出显示的多行文本 (SQL) 粘贴到 PyCharm 中的字符串文字中