Ich versuche, Schraffur (wie Punkte, Hashes, ..) über Konturkarte hinzuzufügen. Eine solche Schraffur könnte die einzigen statistisch signifikanten Konturen oder Konturen mit bestimmten Kriterien darstellen. Wie das folgende Bild auf Natur Artikel (zweite und dritte Handlung) http://www.nature.com/articles/srep16853/figures/3.Overly Patches, die die signifikanten Punkte über Konturkarte darstellen
Der folgende Code zeigt das Niederschlagsprotokoll von NOAA-Daten available zum Download an.
import numpy as np
import sys
import netCDF4 as nc
import matplotlib.pyplot as plt
import matplotlib.mlab as m
import mpl_toolkits.basemap as bm
import os
sys.path.insert(0, '../');import py4met as sm;reload(sm)
#- Reading data for a timeslice, latitude, and longitude:
diri_output="./"
diri="./"
tmp_file = nc.Dataset(diri+"precip.mon.mean.nc","r")
print(tmp_file.variables)
p_pre = tmp_file.variables['precip']
lat = tmp_file.variables['lat'][:]
lon = tmp_file.variables['lon'][:]
time = tmp_file.variables['time']
tmp_file.close
lat1=np.min(lat)
lat2=np.max(lat)
lon1=np.min(lon)
lon2=np.max(lon)
[lonall, latall] = np.meshgrid(lon[:], lat[:])
plt.figure(num=None, figsize=(8+4, 6+4), dpi=80, facecolor='w', edgecolor='k')
mapproj = bm.Basemap(projection='cyl',llcrnrlat=lat1, llcrnrlon=lon1,urcrnrlat=lat2, urcrnrlon=lon2,resolution='l')
mapproj.drawcoastlines()
mapproj.drawmapboundary(fill_color='white')
mapproj.drawcountries()
x, y = mapproj(lonall, latall)
plt.contourf(x,y,p_pre[240,:,:],cmap=plt.cm.GnBu)
plt.colorbar(orientation='horizontal',pad=0.05,shrink=0.6)
plt.title("title")
xx,yy=np.where(p_pre[240,:,:] >= 20)
sig=np.copy(p_pre[0,:,:])
sig[:,:]=1
sig[xx,yy]=0
#plt.contourf(x,y,sig,hatches=['.'])
plt.show()
ich will alle Konturen über 20 mm schlüpfen, so habe ich den obigen Befehl
plt.contourf (x, y, sig, Luken = [ ''])
aber es hat nicht funktioniert (es macht dotes überall auf der Karte und nicht nur Konturen mit bestimmten Kriterien), also habe ich es kommentiert. Irgendwelche Ideen.
Vielen Dank, es funktioniert für mich. Jetzt habe ich verstanden, die Anzahl der schraffierten verwendet ist die Anzahl der Zeilen -1, so kann ich verschiedene Konturen Ebenen mit verschiedenen Schraffuren schlüpfen. Danke noch einmal. – kernel
Ich bin froh, dass Matplotlib solche Fähigkeiten hat, ich habe gesucht, wie patchen in MatLab und ich habe solche eingebaute Fähigkeiten nicht gefunden, eher fand ich den folgenden Beitrag auf MatLab Dateiaustausch [link] (http: //www.mathworks .com/matlabcentral/fileexchange/30733-hatchfill). – kernel