Python 3.x 我如何选择cmap在netCDF4文件中绘制变量,条件为IF?
我有一个netCDF4文件,其中有几个变量是IR或VIS变量(红外线或可见光通道)。我有一个代码,可以读取文件netCDF4,并在创建一个允许显示变量的列表后,问题是,对于红外通道的可视化,我必须选择cmap=plt.cm.gist\u yarg,对于可见通道,我必须选择cmap=plt.cm.gist\u gray 我需要使用条件来指示如果变量以IR或VIS开头,cmap将发生变化,但我不知道如何对我的代码进行更改: 显示我在列表_var中选择的变量之一的代码:Python 3.x 我如何选择cmap在netCDF4文件中绘制变量,条件为IF?,python-3.x,netcdf4,Python 3.x,Netcdf4,我有一个netCDF4文件,其中有几个变量是IR或VIS变量(红外线或可见光通道)。我有一个代码,可以读取文件netCDF4,并在创建一个允许显示变量的列表后,问题是,对于红外通道的可视化,我必须选择cmap=plt.cm.gist\u yarg,对于可见通道,我必须选择cmap=plt.cm.gist\u gray 我需要使用条件来指示如果变量以IR或VIS开头,cmap将发生变化,但我不知道如何对我的代码进行更改: 显示我在列表_var中选择的变量之一的代码: import numpy as
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_列表中的var=VIS008,所以我使用cmap=plt.cm.gist_gray)
我需要在代码中使用的代码行if条件:
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文件:在当前代码中,您可以执行以下操作:
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])
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)
或者,如果您正在vars
列表上编写循环,您可以执行以下操作:
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])
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])
在当前代码中,您可以执行以下操作:
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])
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)
或者,如果您正在vars
列表上编写循环,您可以执行以下操作:
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])
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])
如果我做了第二个解决方案,那么正确的原因是我在[5]中没有得到后面的数字:
:vars=[6]中的[nc.variables[f]for f In vars_list]:对于变量中的变量:如果变量名称中的'VIS':cmap=plt.cm.gist_gray)如果变量名称中的'IR':…:cmap=plt.cm.gist_yarg)否则:\确保我们有一个默认的cmap=plt.cm.jet)plt.imshow(变量[1],cmap=cmap)
谢谢是的,很好,但我不能显示数字我不知道如何显示变量的数字?我在这里有个问题plt.figure()plt.imshow(var,cmap=cmap)
关于var,我如何选择我想要的var,我可以做var[1],或者我如何感谢你,我添加了一个如何绘制单个映射的示例。你可以在vars\u列表中为f做vmins=[nc.variables[f][:].min()
然后是plt.imshow(vars[5],cmap=cmap[5],vmin=mins[5],…)
对不起,意思是vmin=vmins[5]
如果我做了第二个解决方案,那么正确的原因是我没有得到后面的数字:In[5]:vars=[nc.variables[f]for f In vars_list]In[6]:对于变量中的变量:如果变量名称中的'VIS':cmap=plt.cm.gist_gray)如果变量名称中的'IR':…:cmap=plt.cm.gist_yarg)否则:\确保我们有一个默认的cmap=plt.cm.jet)plt.imshow(变量[1],cmap=cmap)
谢谢是的,很好,但我不能显示数字我不知道如何显示变量的数字?我在这里有个问题plt.figure()plt.imshow(var,cmap=cmap)
关于var,我如何选择我想要的var,我可以做var[1],或者我如何感谢你,我添加了一个如何绘制单个映射的示例。你可以在vars\u列表中为f做vmins=[nc.variables[f][:].min()
然后是plt.imshow(vars[5],cmap=cmap[5],vmin=min[5],…)
Sorry,意思是vmin=vmins[5]