私はbasemap tutorial for SST and ice analysisに従おうとしています。入力データは例のデータと異なりますが、netCDF4
はマスクされた配列です。パンダのデータフレームをベースマップのメッシュグリッドに再構成
ように私はpandas
データフレームを持っている:ラッツとロンは、データポイントのマップグリッド上の固有の位置を表す
val_df[0:5]
Out[47]:
lat lon value
0 0.4 98.7 NaN
1 0.4 98.8 NaN
2 0.4 98.9 0.64
3 0.4 99.0 NaN
4 0.5 98.5 1.23
。次のコードを使用できるサンプルデータフレームを作成するには:
from itertools import product
import pandas as pd
import numpy as np
locations = np.array([x for x in product([1,2,3],[4,5,6])])
data = np.random.random(len(locations))
val_df = pd.DataFrame({'lat':locations[:,0], 'lon':locations[:,1],
'value':data})
iがそれを旋回し、このデータフレームを取る前に、やっていること(使用して内蔵のピボット機能)lat
カラムがインデックスとなるように、 lon
カラムはカラムで、値は値です。次に、m.imshow
を使用して結果の値をプロットすることができます。
しかし、これは貧弱な解決策であるようです。 A)pcolormesh
は、私には不明な理由でimshow
よりお勧めします。B)人々は通常meshgridを使い、次にマスクされた配列のようです。しかし、サンプルのデータはあらかじめ用意されているため、ベースマップの例に基づいて、メッシュグリッドとマスクされた配列にデータをどのように構造化するかについては、私は本当に不明です。
latmin = np.floor(val_df.lat.min())
latmax = np.ceil(val_df.lat.max())
lonmin = np.floor(val_df.lon.min())
lonmax = np.ceil(val_df.lon.max())
lats = np.arange(latmin, latmax, 0.1)
lons = np.arange(lonmin, lonmax, 0.1)
lats_mesh, lons_mesh = np.meshgrid(lats, lons)
しかし、私は、構造と値が正しい場所に表示されるようにvalue
列をマスクする方法を、この時点では不明だ:私はラッツ/ロンのmesh_gridを作成する場合
私は次のようにします私はそうのようpcolormesh
にそれを与えるメッシュグリッドの:
from mpl_toolkits.basemap import Basemap
m = Basemap(projection='merc'
, llcrnrlon=lonmin
, llcrnrlat=latmin
, urcrnrlon=lonmax
, urcrnrlat=latmax)
m.drawcoastlines()
m.drawstates()
m.drawcountries()
m.fillcontinents(color='gray', lake_color='white', zorder=0)
m.drawmapboundary(fill_color='white')
pc1 = m.pcolormesh(lons, lats, masked_data, shading='flat', cmap='hot_r', latlon=True)
私たちが実行できる任意のデータを使って例を挙げることはできますか? – Chiel
私はもっと詳しい説明を追加しました。 – mnky9800n
ヘルプが必要な場合は、人々が直接コピーして実行できるスクリプトを作成することが重要です。 – Chiel