Comment tracer une heatmap sur une carte globale avec cartopy en python ?

Active 18 octobre 2021    /    Viewed 438    /    Comments 0    /    Edit


Exemples de comment tracer une heatmap (depuis des données sur une grille régulière) sur une carte globale avec cartopy en python :

Obtenir des données sur une grille régulière

Commençons par obtenir quelques données :

import numpy as np

data = np.loadtxt('https://raw.githubusercontent.com/benjamin-hg-marchant/teaching/main/datasets/modis_myd06_cpop_2d_hist_1b1_grid.txt')

Notez que

data.shape

donne

(360, 180)

ici la longitude [-180,180] sont sur le premier axe (axe =0) et la latitude [-90 : 90] sur le deuxième axe (axe =1) :

Tracer une carte simple avec cartopy

from cartopy import config
from matplotlib.pyplot import figure

import cartopy.crs as ccrs
import matplotlib.pyplot as plt

fig = plt.figure(num=None, figsize=(8, 6), dpi=80, edgecolor='k')

ax = plt.axes(projection=ccrs.PlateCarree())

ax.coastlines()

plt.title("Plot a global map with cartopy in python", fontsize=12)

plt.savefig("cartopy_heatmap_01.png", bbox_inches='tight', dpi=200)

Comment tracer une heatmap (données maillées) sur une carte globale avec cartopy en python ?

Tracer une heatmap avec cartopy

from cartopy import config
from matplotlib.pyplot import figure

import cartopy.crs as ccrs
import matplotlib.pyplot as plt

fig = plt.figure(num=None, figsize=(8, 6), dpi=80, edgecolor='k')

ax = plt.axes(projection=ccrs.PlateCarree())

ax.imshow(data.T, origin='lower', extent=[-180,180,-90,90], transform=ccrs.PlateCarree(),cmap='jet',vmin=0, vmax=1.0)

ax.coastlines()

plt.title("Plot a heatmap with cartopy in python", fontsize=12)

plt.savefig("cartopy_heatmap_02.png", bbox_inches='tight', dpi=200)

Comment tracer une heatmap (données maillées) sur une carte globale avec cartopy en python ?

Références


Card image cap
profile-image
Bazinga

Salut, je suis Ben.

J'ai développé ce site web à partir de zéro avec Django pour partager avec tout le monde mes notes. Si vous avez des idées ou des suggestions pour améliorer le site, faites le moi savoir ! (vous pouvez me contacter via le formulaire de la page d'accueil). Merci!