Python 3.x 我如何选择cmap在netCDF4文件中绘制变量,条件为IF?

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

我有一个netCDF4文件,其中有几个变量是IR或VIS变量(红外线或可见光通道)。我有一个代码,可以读取文件netCDF4,并在创建一个允许显示变量的列表后,问题是,对于红外通道的可视化,我必须选择cmap=plt.cm.gist\u yarg,对于可见通道,我必须选择cmap=plt.cm.gist\u gray

我需要使用条件来指示如果变量以IR或VIS开头,cmap将发生变化,但我不知道如何对我的代码进行更改:

显示我在列表_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_列表中的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]