python - 在cartopy上绘制问题
问题描述
我有一个 nc 文件,我无法绘制数据,数据是北极的冰数据,只有 cartopy 投影出现,或者数据根本没有正确绘制..
<xarray.Dataset> 维度:(时间:1,nv:2,xc:432,yc:432)坐标:
- 时间(时间) datetime64[ns] 2021-10-18T12:00:00
- xc (xc) float64 -5.388e+03 -5.362e+03 ... 5.388e+03
- yc (yc) float64 5.388e+03 5.362e+03 ... -5.388e+03 lat (yc, xc) float32 16.62 16.82 17.02 ... 16.82 16.62 lon (yc, xc) float32 -135.0 -135.1 -135.3 。 .. 44.87 45.0 无坐标尺寸:nv 数据变量:Lambert_Azimuthal_Grid int32 -2147483647 time_bnds (time, nv) datetime64[ns] 2021-10-18 2021-10-19 ice_type (time, yc, xc) float32 1.0 1.0 1.0 .. .nan nan nan不确定性(time, yc, xc) float32 ... status_flag (time, yc, xc) float32 ... 属性:(12/44) 标题:海冰类型总结:每日网格化Level-4海冰类型临时气候...评论:北半球海冰类型分类...主题类别:海洋气候气象大气关键词:GCMDSK:地球科学 > 冰冻圈 > 海冰 > ...关键字词汇表:GCMDSK:GCMD 科学关键字:https://gcmd.eart... ... ... processing_level:Level-4 (l4) tracking_id:da609396-1de9 -4d63-9cb1-ea49efba1be7 doi: https://doi.org/10.24381/cds.29c46d83naming_authority:no.met 约定:CF-1.7 ACDD-1.3 standard_name_vocabulary:CF 标准名称表(v36,2016 年 9 月 21 日)
我注意到有二维纬度和二维经度,也许问题来自这里。数据集的名称是“海冰边缘和类型从 1978 年到现在的每日网格数据来自卫星观测。在数据描述中,我可以读到它是投影兰伯特方位角等面积(EASE-Grid 版本 2.0)以两极。
这是我的代码:
import os
import subprocess
import sys
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
#from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.artist import Artist
import time
import datetime
from netCDF4 import Dataset as Dataset
import getpass
import cartopy.crs as ccrs
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import cartopy.feature as cfeat
from matplotlib import cm
import warnings
warnings.filterwarnings('ignore')
#def anim(i):
fig=plt.figure(figsize=(10,10))
from function_wm import xr_opening, mapCARTOPY
name='/home/ewen/Untitled_Folder/ice_type_nh_ease2-250_icdr-v2p0_202110181200.nc'
F1=xr_opening(name)
ice_type= F1['ice_type'].values
lats = F1.variables['lat'][:]
lons = F1.variables['lon'][:]
#lat=F1['lat'].values
#lon=F1['lon'].values
vect_temps=F1.time.values
#F1.dropna()
ax = fig.add_subplot(111, projection=ccrs.LambertAzimuthalEqualArea(central_latitude=90,
central_longitude= -90))
#ax.set_extent([-11,20,60,89])
ax.coastlines()
ax.set_global()
ax.contourf(F1.xc,F1.yc,ice_type[0,:,:],transform=ccrs.LambertAzimuthalEqualArea(central_latitude=90,
central_longitude= -90))
#anim(0)
plt.show()```
[result][1]
[1]: https://i.stack.imgur.com/e1EBS.png
解决方案
推荐阅读
- flutter - 如何在 Flutter 中获得安全的区域大小/填充
- r - 在 R 中将矩阵保存为对象的问题
- powershell - 遍历 CSV 并创建一个数组
- snowflake-cloud-data-platform - 雪花存储过程 - 如何检索 CTAS 语句创建的行数
- zsh - JDK 的别名在 ZSH 中不起作用,但在 bash 中起作用
- python - 将 Python Flask 应用程序部署到 Heroku 崩溃了
- php - apache 临时通过脚本启动 VirtualHost
- ruby - Ruby中浮点变量的最大值
- javascript - 正则表达式 (Regex) 一次只允许数字或带有数字的特定字符
- javascript - 如何正确过滤数组