python - 绘制 map : Rotating arrows for ocean surface currents

标签 python numpy matplotlib matplotlib-basemap

以下是 netCDF 文件显示的变量: 1

我编写这段代码是为了使用 netCDF 文件绘制地中海表面电流:

import netCDF4
from netCDF4 import Dataset
import datetime as dt
import numpy as np
import numpy.ma as ma
from datetime import date, datetime, timedelta
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

nc=Dataset('datasets/essai.nc')

y = nc.variables['g0_lat_1']
y = np.array(y)

x = nc.variables['g0_lon_2']
x = np.array(x)

u = nc.variables['UOGRD_GDS0_DBSL']
u = np.array(u)
u = u[0, :, :]
u = np.deg2rad(u)

v = nc.variables['VOGRD_GDS0_DBSL']
v = np.array(v)
v = v[0, :, :]
v = np.deg2rad(v)

y, x = np.meshgrid(y,x)

plt.quiver(x [::10], y[::10], u[::10], v[::10], pivot='tail')
plt.show()

这给了我这个:

当我放大时,我们可以看到有箭头和点: enter image description here 首先,我不知道这些点是什么意思,我无法想象海岸线。然后,我所有的箭都指向同一个方向!所以我在论坛上找到了这段代码:

# Calculate positions of vectors on map projection 
y, x = np.meshgrid(lat,lon)

# Calculate the orientation of the vectors
x1, y1 = m(lon+u, lat+v)
u_map, v_map = x1-x, y1-y

# Rescale the magnitudes of the vectors...
mag_scale = np.hypot(u_map, v_map) / np.hypot(u, v)
u_map /= mag_scale
v_map /= mag_scale

m.quiver(x, y, u_map, v_map)
plt.show()

但它只返回一个箭头。你有什么想法吗?

最佳答案

您可以尝试修改下面的代码以适合您的数据,basemap 上也有有用的示例网站。但是,如果这些图用于发布,您最好使用 ncl它有大量用于绘制气象/海洋数据的工具。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

x = np.linspace(-10, 40, 10)
y = np.linspace(25, 45, 10)
lons, lats = np.meshgrid(x, y)

u = np.random.random(np.shape(lons))
v = np.random.random(np.shape(lats))


m = Basemap(llcrnrlon=-10.,llcrnrlat=25.,urcrnrlon=40.,urcrnrlat=45.,
            lon_0=10., lat_0=35,
            projection='lcc', resolution ='l')

m.drawcoastlines()

X,Y = m(lons,lats)
m.quiver(X,Y,u,v)

plt.show()

关于python - 绘制 map : Rotating arrows for ocean surface currents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528764/

相关文章:

python - 是否可以在 nbviewer 中使用 jupyter_contrib_nbextensions?

python - PIP 在 Windows 8 上的何处存储/保存 Python 3 模块/包?

python - 如何从 NumPy 数组中获取不包括某个索引的所有值?

python - 如何更改matplotlib中矩阵的行和列的大小

python - 将绘图另存为 jpeg 时出现像素化字体

python - PUT 图片上传请求在 django rest 中不起作用

python - 欧拉函数没有给出结果

python - 在并发.futures.ProcessPoolExecutor map() 和 Submit() 方法中使用 numpy.fromiter 和 numpy.array 的问题

python - 如何在 for 循环之前用零初始化不同的变量(同时)?

python - matplotlib 中 savefig JPG 的 IOError