Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib:自定义打印功能的颜色映射选择_Python - Fatal编程技术网

Python matplotlib:自定义打印功能的颜色映射选择

Python matplotlib:自定义打印功能的颜色映射选择,python,Python,因为有许多不同的颜色贴图,我想在下面的函数中设置一个参数作为颜色贴图的名称,它允许用户选择他们喜欢的颜色贴图,如“viridis”、“plasma”、“winter”、“cool”等 def my_plot(cm_name): # setup the normalization and the colormap nValues = np.array(np.linspace(1, 50, 50)) normalize = mcolors.Normalize(vmin=nV

因为有许多不同的颜色贴图,我想在下面的函数中设置一个参数作为颜色贴图的名称,它允许用户选择他们喜欢的颜色贴图,如“viridis”、“plasma”、“winter”、“cool”等

def my_plot(cm_name):

    # setup the normalization and the colormap
    nValues = np.array(np.linspace(1, 50, 50))
    normalize = mcolors.Normalize(vmin=nValues.min(), vmax=nValues.max())
    colormap = cm.cm_name

    # setup the colorbar
    sm = cm.ScalarMappable(norm=normalize, cmap=colormap)
    sm.set_array(nValues)

    # below is the code for plotting
但是,当我如上所示定义绘图功能时,当我调用
my_plot(viridis)
时,会弹出一条错误消息:

NameError: name 'viridis' is not defined

有人能帮我吗?谢谢

彩色地图的名称应该是一个
字符串
,因此您需要像
my_plot(“viridis”)一样调用它。如果省略引号,python会认为
viridis
是要传入的变量的名称,然后抱怨没有告诉它这个变量是什么。

函数只能接受字符串作为参数,但
cm.cm_name
是一个属性。您无法通过写入
cm.viridis'
来访问
cm
的属性
viridis

这是
getattr
的完美用例,它接受对象和字符串,并返回该对象的属性,该对象的名称与传递给
getattr
的字符串相同

换线

colormap = cm.cm_name

并使用表示颜色映射的字符串(不是变量)调用函数:

my_plot('viridis')
my_plot('viridis')