Python:如何在具有散点图的地图上绘制数组?

锡伯·奥德拉尼格(ThibÖdlaniug)

让我介绍一下上下文。我有一个二进制文件,我必须在其中提取数据。这是一个巨大的矩阵,其中每个经度/纬度的像素深度。该代码的第一部分是一些小代码,用于读取和存储每个数据(以预定义的lon / lat间隔)。但是,我想在世界地图上绘制这些数据,所以被阻止了。我可以在带有网格的空白图形上绘制数据,但是我不知道如何插入世界地图(使用底图)。

# -*- coding: utf-8 -*-
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.colors import LinearSegmentedColormap

# Definition of the grid
GLDB_res = 1./120.
GLDB_lon = np.linspace(-180.+0.5*GLDB_res, 180.-0.5*GLDB_res, 43200)
GLDB_lat = np.linspace(  90.-0.5*GLDB_res, -90.+0.5*GLDB_res, 21600)

j_Asia = pl.find(pl.logical_and(GLDB_lon>=0.,GLDB_lon<=40.))
i_Asia= pl.find(pl.logical_and(GLDB_lat>=50.,GLDB_lat<=90.))

# Read depth

GLDB_depth_file = 'fileURL/GlobalLakeDepth.dat'
GLDB_depth = np.fromfile(GLDB_depth_file,'<i2')
GLDB_depth_r = GLDB_depth.reshape((21600,43200))

GLDB_depth_Asia = GLDB_depth_r[i_Asia[0]:i_Asia[-1]+1,j_Asia[0]:j_Asia[-1]+1].astype(float)
GLDB_depth_Asia[np.where(GLDB_depth_Asia==0.)] = np.nan

# Création de la Basemap

map=Basemap(projection='cyl', llcrnrlat=50,urcrnrlat=90,\
        llcrnrlon=0,urcrnrlon=180, resolution='l')
map.drawcoastlines()
map.fillcontinents(color='#cc9955')

#Colormap
cmap_depth  = LinearSegmentedColormap.from_list("my_colormap", ((200./255,200/255.,1.), (20./255,20./255,165./255)), N=255, gamma=1.0)

#Graphique

plt.close()
fig=plt.figure(1,facecolor='w',figsize=(11,7))
ax=plt.subplot(1,2,1)
x,y=map(j_Asia,i_Asia) #associe un x et un y au lon et lat 
plt.scatter(x,y, c='my_colormap') #trace les données lacs avec Basemap

c=plt.colorbar(orientation='horizontal')
for i in np.arange(0,len(i_Asia),120/2): #res:1/120th deg
map=plt.plot(np.array([0,len(i_Asia)]),np.array([i,i]),'-',c=(150./255,150./255,150./255))
map=plt.plot(np.array([i,i]),np.array([0,len(i_Asia)]),'-',c=(150./255,150./255,150./255))

plt.show()

总而言之,我想插入我的数组Global_Depth_Asia,该数组代表该区域地图上的所有深度。问题是我有一个无效的rgb参数问题!

谢谢

认真的重要性

我显然不能运行代码进行测试,但是里面有些奇怪的事情。

  • plt.close()关闭底图图。为什么要这么做?
  • plt.figure创建一个没有底图的新地物。这可能是不希望的。plt.subplot如果要使用底图图进行绘制,也请删除
  • 用于map.scatter()将数据绘制到地图上。
  • 提供数据,根据该数据应为scatterc参数选择颜色
  • 将颜色图提供给cmap参数。

    m.scatter(x,y, c=data, cmap=cmap_depth)
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:如何在Cartopy地图上的特定点绘制散点图?

如何在由分区分隔的地图上绘制散点图?

如何在python中的散点图上绘制线?

如何在具有许多点(纬度和经度)的反应本机地图上绘制折线?

如何在单个地图上使用具有渐变效果的 FIP 绘制特定的美国县

如何在散点图上具有多个分类标记

如何在散点图上绘制鼠标位置?

如何在地图上删除绘制路线

如何在栅格地图上绘制值?

Android如何在地图上绘制圆圈

如何在单个散点图上绘制 2 条趋势线?(Python)

如何清除pyplot散点图上的所有动态绘制的点?

在python中的散点图上绘制所有字典点

如何使用python在伦敦地图上添加散点图

如何在android中通过json数组在谷歌地图上绘制折线?

如何基于Python中回归的theta在散点图上绘制线?

如何在R中的现有地图上绘制首都城市

ggplot如何在带有州ID的美国地图上绘制饼图

如何在python中的数据数组/地图中绘制圆

如何在散点图上拖放

如何在传单地图上打印/显示/绘制MultiPolygon GeoJSON

如何在Google地图上删除绘制的多边形

如何在Android中的Google地图上绘制网格?

如何在空间地图上绘制热图

如何在Google地图上绘制SpatialLinesDataFrame特征图

如何在R中的国家地图上绘制位置点?

如何在Android的Google地图上绘制自由手形

如何在ggplot中的地图上绘制等宽的矩形

如何在地图上绘制某些引用的标签?使用 cartopy