在底图上绘制 netCDF4 数据
Plotting netCDF4 data on Basemap
我有一个包含 3 列的 csv 文件(经度、纬度 和 降水量)和 90 行,我需要将其绘制为 Python 中的地图。我没有 time 索引,只有与坐标关联的值。我遵循了这个程序:
- 将 .cvs 转换为 .nc(netCDF 文件)
- Plot .nc thought Basemap + Matplotlib
第二步出现如下错误:
ValueError: need more than 1 value to unpack
这似乎符合代码 c_scheme = mp.pcolor(x,y,avp[:], cmap = 'jet')
的要求,尤其是 avp[:]
。当我 运行 avp.shape
我得到它的形状为 (90L,) 并且 avp.ndim
显示值为 1.
我的问题是:“avp”中究竟应该显示什么值?我应该从这个维度中提取什么?
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
data = Dataset(r'SN1_PTPM.nc')
fig = plt.figure(figsize=(12,9))
lats = data.variables['Latitude'][:] #latitute column
lons = data.variables['Longitude'][:] #longitute column
avp = data.variables['Precipitation'][:] #precipitation column
mp = Basemap(projection = 'merc',
llcrnrlon = 5.5,
llcrnrlat = 8.5,
urcrnrlon = -75,
urcrnrlat = -72,
resolution = 'i')
lon,lat = np.meshgrid(lons,lats)
x,y = mp(lon,lat)
c_scheme = mp.pcolor(x,y,avp[:], cmap = 'jet')
cbar = mp.colorbar(c_scheme, location = 'right', pad = '10%')
plt.show()
提前感谢您提供的任何信息。
我想问题是您的坐标是元组 (lat,lon),每个元组与一个值相关联。在那种情况下,您不能使用 meshgrid,因为它会创建一个坐标网格,但您在所有这些点上都没有值(您创建了一个二维网格,但只有一个一维值列表)
我有一个包含 3 列的 csv 文件(经度、纬度 和 降水量)和 90 行,我需要将其绘制为 Python 中的地图。我没有 time 索引,只有与坐标关联的值。我遵循了这个程序:
- 将 .cvs 转换为 .nc(netCDF 文件)
- Plot .nc thought Basemap + Matplotlib
第二步出现如下错误:
ValueError: need more than 1 value to unpack
这似乎符合代码 c_scheme = mp.pcolor(x,y,avp[:], cmap = 'jet')
的要求,尤其是 avp[:]
。当我 运行 avp.shape
我得到它的形状为 (90L,) 并且 avp.ndim
显示值为 1.
我的问题是:“avp”中究竟应该显示什么值?我应该从这个维度中提取什么?
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
data = Dataset(r'SN1_PTPM.nc')
fig = plt.figure(figsize=(12,9))
lats = data.variables['Latitude'][:] #latitute column
lons = data.variables['Longitude'][:] #longitute column
avp = data.variables['Precipitation'][:] #precipitation column
mp = Basemap(projection = 'merc',
llcrnrlon = 5.5,
llcrnrlat = 8.5,
urcrnrlon = -75,
urcrnrlat = -72,
resolution = 'i')
lon,lat = np.meshgrid(lons,lats)
x,y = mp(lon,lat)
c_scheme = mp.pcolor(x,y,avp[:], cmap = 'jet')
cbar = mp.colorbar(c_scheme, location = 'right', pad = '10%')
plt.show()
提前感谢您提供的任何信息。
我想问题是您的坐标是元组 (lat,lon),每个元组与一个值相关联。在那种情况下,您不能使用 meshgrid,因为它会创建一个坐标网格,但您在所有这些点上都没有值(您创建了一个二维网格,但只有一个一维值列表)