我如何选择 cmap 来绘制带有条件 IF 的 netCDF4 文件中的变量?
how can i choose cmap to plot variables in netCDF4 file with condition IF?
我有一个 netCDF4 文件,其中有几个变量是 IR 或 VIS 变量(红外线或可见光通道)我有一个代码可以读取文件 netCDF4 并在创建 list_var 后允许显示变量,问题是什么对于红外通道的可视化,我必须选择 cmap = plt.cm.gist_yarg,对于可见通道,cmap = plt.cm.gist_gray
我需要使用条件 if 来指示以防变量以 IR 或 VIS 开头,cmap 将更改,但我不知道如何为我的代码执行此操作:
显示我在 list_var 中选择的变量之一的代码:
import numpy as np
import netCDF4
from netCDF4 import Dataset
import pylab as plt
fic='Mmultic3kmNC4_msg04_201905080200.nc
path='/home/data/'
nc = netCDF4.Dataset(path+fic,'r')
nc.variables.keys()
print nc.variables.keys()
odict_keys(['time', 'dtime', 'IR_016', 'commentaires', 'satellite', 'geos', 'ImageNavigation', 'GeosCoordinateSystem', 'Y', 'X', 'Albedo_to_Native_count_IR_016', 'IR_039', 'Temp_to_Native_count_IR_039', 'IR_087', 'Temp_to_Native_count_IR_087', 'IR_097', 'Temp_to_Native_count_IR_097', 'IR_108', 'Temp_to_Native_count_IR_108', 'IR_120', 'Temp_to_Native_count_IR_120', 'IR_134', 'Temp_to_Native_count_IR_134', 'VIS006', 'Albedo_to_Native_count_VIS006', 'VIS008', 'Albedo_to_Native_count_VIS008', 'WV_062', 'Temp_to_Native_count_WV_062', 'WV_073', 'Temp_to_Native_count_WV_073'])
vars = [nc.variables['VIS006'],nc.variables['VIS008'],nc.variables['IR_120'],nc.variables['IR_108'],nc.variables['IR_087'],nc.variables['IR_134'],nc.variables['IR_039'],nc.variables['WV_073'],nc.variables['WV_062'],nc.variables['IR_097']]
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
vars = [nc.variables[f] for f in vars_list]
plt.imshow(vars[1],cmap=plt.cm.gist_gray)
#(var_list 中的 var1 是 = VIS008 所以我使用 cmap=plt.cm.gist_gray)
我需要在我的代码中使用条件的代码行:
if "IR" in var:
plt.imshow(var[..], cmap=plt.cm.gist_yarg)
elif "VIS" in var:
plt.imshow(vars[..], cmap=plt.cm.gist_gray)
如果您有任何想法和帮助使用条件来为 iR 或 VIS 选择 cmap 并在之后显示它!
谢谢
netcdf4 文件在这里:netcdf
在您当前的代码中,您可以执行如下操作:
import matplotlib.pyplot as plt
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
cmaps = []
for var in vars_list:
if 'VIS' in var:
cmaps.append(plt.cm.gist_yarg)
elif 'IR' in var:
cmaps.append(plt.cm.gist_gray)
else: # Make sure we have a default
cmaps.append(plt.cm.jet)
plt.imshow(vars[1],cmap=cmaps[1])
或者,如果你在 vars
列表上写一个循环,你可以这样做:
for var in vars:
if 'VIS' in var.name:
cmap = plt.cm.gist_yarg
elif 'IR' in var.name:
cmap = plt.cm.gist_gray
else: # Make sure we have a default
cmap = plt.cm.jet
plt.imshow(var, cmap=cmap)
完整的工作示例:
import netCDF4
import matplotlib.pyplot as plt
nc = netCDF4.Dataset('Mmultic3kmNC4_msg04_201903090130.nc','r')
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
vars = [nc.variables[f] for f in vars_list]
for var in vars:
if 'VIS' in var.name:
cmap = plt.cm.gist_yarg
elif 'IR' in var.name:
cmap = plt.cm.gist_gray
else: # Make sure we have a default
cmap = plt.cm.jet
plt.figure()
plt.imshow(var, cmap=cmap)
以及如何绘制单个地图的示例:
import netCDF4
import matplotlib.pyplot as plt
nc = netCDF4.Dataset('Mmultic3kmNC4_msg04_201903090130.nc','r')
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
vars = [nc.variables[f] for f in vars_list]
cmaps = []
for var in vars_list:
if 'VIS' in var:
cmaps.append(plt.cm.gist_yarg)
elif 'IR' in var:
cmaps.append(plt.cm.gist_gray)
else: # Make sure we have a default
cmaps.append(plt.cm.jet)
plt.figure()
plt.imshow(vars[2], cmap=cmaps[2])
我有一个 netCDF4 文件,其中有几个变量是 IR 或 VIS 变量(红外线或可见光通道)我有一个代码可以读取文件 netCDF4 并在创建 list_var 后允许显示变量,问题是什么对于红外通道的可视化,我必须选择 cmap = plt.cm.gist_yarg,对于可见通道,cmap = plt.cm.gist_gray
我需要使用条件 if 来指示以防变量以 IR 或 VIS 开头,cmap 将更改,但我不知道如何为我的代码执行此操作:
显示我在 list_var 中选择的变量之一的代码:
import numpy as np
import netCDF4
from netCDF4 import Dataset
import pylab as plt
fic='Mmultic3kmNC4_msg04_201905080200.nc
path='/home/data/'
nc = netCDF4.Dataset(path+fic,'r')
nc.variables.keys()
print nc.variables.keys()
odict_keys(['time', 'dtime', 'IR_016', 'commentaires', 'satellite', 'geos', 'ImageNavigation', 'GeosCoordinateSystem', 'Y', 'X', 'Albedo_to_Native_count_IR_016', 'IR_039', 'Temp_to_Native_count_IR_039', 'IR_087', 'Temp_to_Native_count_IR_087', 'IR_097', 'Temp_to_Native_count_IR_097', 'IR_108', 'Temp_to_Native_count_IR_108', 'IR_120', 'Temp_to_Native_count_IR_120', 'IR_134', 'Temp_to_Native_count_IR_134', 'VIS006', 'Albedo_to_Native_count_VIS006', 'VIS008', 'Albedo_to_Native_count_VIS008', 'WV_062', 'Temp_to_Native_count_WV_062', 'WV_073', 'Temp_to_Native_count_WV_073'])
vars = [nc.variables['VIS006'],nc.variables['VIS008'],nc.variables['IR_120'],nc.variables['IR_108'],nc.variables['IR_087'],nc.variables['IR_134'],nc.variables['IR_039'],nc.variables['WV_073'],nc.variables['WV_062'],nc.variables['IR_097']]
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
vars = [nc.variables[f] for f in vars_list]
plt.imshow(vars[1],cmap=plt.cm.gist_gray)
#(var_list 中的 var1 是 = VIS008 所以我使用 cmap=plt.cm.gist_gray)
我需要在我的代码中使用条件的代码行:
if "IR" in var:
plt.imshow(var[..], cmap=plt.cm.gist_yarg)
elif "VIS" in var:
plt.imshow(vars[..], cmap=plt.cm.gist_gray)
如果您有任何想法和帮助使用条件来为 iR 或 VIS 选择 cmap 并在之后显示它!
谢谢
netcdf4 文件在这里:netcdf
在您当前的代码中,您可以执行如下操作:
import matplotlib.pyplot as plt
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
cmaps = []
for var in vars_list:
if 'VIS' in var:
cmaps.append(plt.cm.gist_yarg)
elif 'IR' in var:
cmaps.append(plt.cm.gist_gray)
else: # Make sure we have a default
cmaps.append(plt.cm.jet)
plt.imshow(vars[1],cmap=cmaps[1])
或者,如果你在 vars
列表上写一个循环,你可以这样做:
for var in vars:
if 'VIS' in var.name:
cmap = plt.cm.gist_yarg
elif 'IR' in var.name:
cmap = plt.cm.gist_gray
else: # Make sure we have a default
cmap = plt.cm.jet
plt.imshow(var, cmap=cmap)
完整的工作示例:
import netCDF4
import matplotlib.pyplot as plt
nc = netCDF4.Dataset('Mmultic3kmNC4_msg04_201903090130.nc','r')
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
vars = [nc.variables[f] for f in vars_list]
for var in vars:
if 'VIS' in var.name:
cmap = plt.cm.gist_yarg
elif 'IR' in var.name:
cmap = plt.cm.gist_gray
else: # Make sure we have a default
cmap = plt.cm.jet
plt.figure()
plt.imshow(var, cmap=cmap)
以及如何绘制单个地图的示例:
import netCDF4
import matplotlib.pyplot as plt
nc = netCDF4.Dataset('Mmultic3kmNC4_msg04_201903090130.nc','r')
vars_list = ['VIS006','VIS008','IR_120','IR_108','IR_087','IR_134','IR_039','WV_073','WV_062','IR_097']
vars = [nc.variables[f] for f in vars_list]
cmaps = []
for var in vars_list:
if 'VIS' in var:
cmaps.append(plt.cm.gist_yarg)
elif 'IR' in var:
cmaps.append(plt.cm.gist_gray)
else: # Make sure we have a default
cmaps.append(plt.cm.jet)
plt.figure()
plt.imshow(vars[2], cmap=cmaps[2])