我是Python和Jupyter noteboook的初学者, 我正在尝试使用Cartopy绘制从NOAA获得的数据。 我得到的代码如下 我遇到的问题是“ os.path.join”部分, 因为我的数据集保存在便携式光盘中。 我尝试使用物理路径,并将其添加到找到的代码中。 但是它显示了一个“ KeyError:'/ Elements'” 物理路径为: “ /Elements/Capstone_Project_Data/NOAA/air.mon.amon.nc”
代码如下: 任何建议和帮助将不胜感激。 非常感谢你!
import os
import matplotlib.pyplot as plt
from netCDF4 import Dataset as netcdf_dataset
import numpy as np
from cartopy import config
import cartopy.crs as ccrs
# get the path of the file. It can be found in the repo data directory.
fname = os.path.join(config["/Elements"],'/Capstone_Project_Data','/NOAA',
#'/Elements','/Capstone_Project_Data','/NOAA',
'air.mon.amon.nc'
)
dataset = netcdf_dataset(fname)
sst = dataset.variables['sst'][0, :, :]
lats = dataset.variables['lat'][:]
lons = dataset.variables['lon'][:]
ax = plt.axes(projection=ccrs.PlateCarree())
plt.contourf(lons, lats, sst, 60,
transform=ccrs.PlateCarree())
ax.coastlines()
plt.show()
答案 0 :(得分:1)
您似乎正在尝试根据Cartopy文档改编此示例? https://scitools.org.uk/cartopy/docs/latest/matplotlib/advanced_plotting.html?highlight=config#contour-plots
在该示例中,Cartopy的config
词典用于确定某些标准样品数据的位置。如果您要提供自己的数据,则根本不需要使用config
字典,您可以直接指定文件的路径,甚至根本不需要os.path.join
:
# Correct this if your path is different
fname = "/Elements/Capstone_Project_Data/NOAA/air.mon.mean.nc"
dataset = netcdf_dataset(fname)
(请注意,如果您使用os.path.join
,它将为您插入/
,因此它们不需要为每个元素加上前缀。)
该示例的其余部分可能无法正常工作,因为在编写该示例时,它正在netcdf文件中寻找sst
变量,因此您必须更改它以从您的计算机中加载您感兴趣的变量文件。