私は衛星データを使って簡単なプロットをプロットしようとしています。このデータには緯度、経度、および緯度(海面水位)が含まれています。私はこの例に使用されるデータは、これは私がして始めた実験をしようとしています簡単なスクリプトはここにあるhere位置しています: - 私は直面しています問題は、緯度と経度が164の形状を含んでいることです何matplotlibを使用して異なる次元のデータをプロットする
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import platform
import numpy as np
from netCDF4 import Dataset
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
width = 10
height = 8
nc_f = ('ctoh.sla.ref.RA2.medsea.0543.nc')
nc_fid = Dataset(nc_f, 'r')
lons = nc_fid.variables['lon'][:]
lats = nc_fid.variables['lat'][:]
sla = nc_fid.variables['sla'][:]
lon_0 = lons.mean()
lot_0 = lats.mean()
lon_max = nc_fid.variables['lon'].lon_max
lon_min = nc_fid.variables['lon'].lon_min
lat_min = nc_fid.variables['lat'].lat_min
lat_max = nc_fid.variables['lat'].lat_max
m = Basemap(projection='merc', lat_0=lot_0, lon_0=lon_0,
resolution = 'l', llcrnrlon=lon_min, llcrnrlat=lat_min,
urcrnrlon=lon_max, urcrnrlat=lat_max)
m.drawcoastlines()
m.drawcountries(linewidth=1.0)
# lons,lats= np.meshgrid(lons, lats)
x, y = m(lons, lats)
# plt.figure(figsize=(width, height), frameon=False)
# plt.contourf(x, y, sla)
print(y.shape)
print(x.shape)
print(sla.shape)
cs = m.contourf(x, y, sla)
plt.contourf(np.reshape(x, sla.shape), np.reshape(y, sla.shape), sla)
plt.show()
ベースマップ上にプロットされる実際の変数は(164,83)の形を含む。
(164,)
(164,)
(164, 83)
Traceback (most recent call last):
File "satellite.py", line 39, in <module>
cs = m.contourf(x, y, sla)
File "/home/sundar/.anaconda2/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.py", line 521, in with_transform
return plotfunc(self,x,y,data,*args,**kwargs)
File "/home/sundar/.anaconda2/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.py", line 3644, in contourf
xx = x[x.shape[0]/2,:]
IndexError: too many indices for array
これは私がdiffent寸法/形状のデータを取り扱っております初めてです - :ここで私は、端末に持っている完全なエラーメッセージがあります。これらの異なる形状のデータはどのようにプロットされますか?
私は少し混乱しています。正確にプロットしようとしているのは何ですか?私が正しく理解していると、各ペアに164の緯度/経度ペアと83のデータポイントがありますか?それらの83点はどのように解釈されるべきですか? – roganjosh
実際、この例を見ると[docs](http://basemaptutorial.readthedocs.io/en/latest/plotting_data.html#contourf)のヘルプが表示されます。サンプルデータソース( 'osgeo'ライブラリがインストールされている必要があるようです)を調べる価値があります。私は 'matplotlib'から他のすべての獣であることが分かったので、' matplotlib'から 'basemap'に質問名を変更することも考えています。 – roganjosh
あなたはしません。 '* X *と* Y *は両方とも* Z *と同じ形の2次元でなければならない、あるいは は' 'len(X)' 'が1次元でなければなりません。 * Z *と '' len(Y) ''の列数は、* Z *の行数です。 – Goyo