python - 如何使用 xarray、numpy 和 Basemap 从我的数据集中屏蔽海洋区域?
问题描述
我有一个 netCDF 文件“VWC_95percentile_by_seasons.nc”。它包含三个维度seasons
(DJF、JJA、MAM、SON),latitude
变量longitude
名为VWC 95TH PERCENTILE
.
变量打印如下:
<xarray.DataArray 'VWC 95TH PERCENTILE' (season: 4, latitude: 106, longitude: 193)>
dask.array<shape=(4, 106, 193), dtype=float64, chunksize=(4, 106, 193)>
Coordinates:
* latitude (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
* longitude (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
* season (season) object 'DJF' 'JJA' 'MAM' 'SON'
我需要在一个数字上为每个季节绘制一个图。每个地块都需要从海洋区域中屏蔽。
我的代码是:
import os
import time, datetime
import xarray as xr
import numpy as np
import pandas as pd
from glob import glob
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap, maskoceans
shapefile1=r'{PATH}\shp\regions'
ds_path = r'{PATH}\output\VWC_95percentile_by_seasons.nc'
variable_name = 'VWC 95TH PERCENTILE'
lable = 'VWC'
title = 'VWC 95TH PERCENTILE'
print("### LOAD DATA")
ds = xr.open_mfdataset(ds_path)
da = ds[variable_name]
print(da)
print("### PLOTTING")
# define the colormap
cmap = plt.cm.jet
# extract all colors from the .jet map
cmaplist = [cmap(i) for i in range(cmap.N)]
# create the new map
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)
# colour levels
levels=[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
# Plot
p = da.plot(levels=10, cmap=cmap, x='longitude', y='latitude', col='season', cbar_kwargs={'label': lable}) # p is an instance of <class 'xarray.plot.facetgrid.FacetGrid'>
plt.suptitle(title)
for i, ax in enumerate(p.axes.flatten()):
ax.set_xlabel('')
ax.set_ylabel('')
map = Basemap(llcrnrlat=-39.2,urcrnrlat=-33.9,llcrnrlon=140.8,urcrnrlon=150.0,resolution='i',ax=ax)
map.readshapefile(shapefile1, 'regions', linewidth=0.5) # draw disctict boundaries
plt.show()
如何使用 xarray、numpy 和 Basemap 屏蔽所有海洋区域?
解决方案
推荐阅读
- swift - 我得到线程 1:信号 SIGABRT 和我的 IOS 应用程序崩溃
- ios - 在 UITextView 中更改/动画 maximumNumberOfLines?
- android - Kotling :: Android :: java.lang.ClassCastException: java.lang.Class 无法转换为 androidx.lifecycle.ViewModel
- codeigniter - 在单个网站上加载多个域
- scikit-learn - ImportError:无法导入名称“_print_elapsed_time”
- c# - asp.net textbox lostfocus javascript调用,代码看起来不错但无法编译
- php - Magento - 在我的主题 After_Body_Start 的所有页面上添加一些 HTML/php/JS
- swift - 我无法将 MacPorts 的 /opt/local/include/ncurses.h 导入到我的 Swift 项目中。它与 macOS SDK /usr/include/curses.h 冲突。有什么提示吗?
- python - Apache Beam 管道中的 Conda 依赖项
- netbeans - 我可以更改 netbeans IDE 6.5.1 的外观吗