Python matplotlib:自定义打印功能的颜色映射选择
因为有许多不同的颜色贴图,我想在下面的函数中设置一个参数作为颜色贴图的名称,它允许用户选择他们喜欢的颜色贴图,如“viridis”、“plasma”、“winter”、“cool”等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
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')