等高線マップ上にハッチング(ドット、ハッシュなど)を追加しようとしています。このような孵化は、統計的に有意な等高線または一定の基準を有する等高線のみを表すことができる。次の自然の記事の画像(2番目と3番目のプロット)http://www.nature.com/articles/srep16853/figures/3のように。輪郭マップよりも有意な点を表す過剰なパッチ
NOAAデータavailableからの降水量のプロットを次の図に示します。
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()
Iが20mm以上のすべての輪郭を孵化したいので、私は
上記のコマンドを使用plt.contourf(X、Y、SIG、ハッチ= [ ''])
しかし、それは動作しませんでした(マップ上のあらゆる場所に特定の基準を持つ等高線だけでなく)ので、私はそれをコメントしました。 アイデア
ありがとう、それは私のために働く。さて、私は使用されたハッチングの数が-1の数であることを理解しました。したがって、異なるハッチングで異なる輪郭レベルをハッチすることができます。再度、感謝します。 – kernel
matplotlibにこのような機能があることを嬉しく思っています.MatLabでどのようにパッチを当てていますか?そのような組み込み機能が見つからなかったのですが、MatLabファイル交換で次のような寄与をしました[http://www.mathworks .com/matlabcentral/fileexchange/30733-hatchfill)。 – kernel