将colormap作为参数传递给函数

翘曲

抱歉,如果此问题已在其他地方解决。在此站点上有关将对象传递给函数的搜索导致与c ++相关的帖子。Google结果指向与生成不同颜色图有关的条目。

背景

我想使用matplotlib颜色图为线图着色。此外,我希望能够指定哪个颜色图,就像我所说的functrion一样。

方法:

import numpy as np, matplotlib.pyplot as plt

data = [[1,2,3,4], [5,6,7,8], [6,7,83,5]]

def plotting_function(data, color_map=plt.cm.viridis, plot_kwds=None)

    colors = color_map(np.linspace(0,1,len(data))

    if plot_kwds is None:
        plt_kwds = {}

    for i, y in enumerate(data):
        x_axis = range(len(y))
        plot_kwds['color'] = colors[i]
        plt.plot(x_axis, y, **plot_kwds)

预期:

一个根据绿线着色的线条图。

其实:

线条颜色不符合虹膜的图形。

我意识到我可以通过colors = plt.cm.viridis(np.linspace(0,1,len(data))移入该函数来解决此问题,但是每次我想更改颜色时都弄乱源代码会很不方便。

题:

如何将颜色图传递给自定义函数?我缺少一种更简单的方法吗?

我非常感谢您的帮助!

谢尔多雷

为什么你看不到效果的原因是因为你的初始字典使用不同的名称:plt_kwds代替plot_kwds

我认为,可以通过使用color关键字在for循环内分配颜色来简单地实现所需的效果你不需要plot_kwds

import numpy as np
import matplotlib.pyplot as plt

data = [[1,2,3,4], [5,6,7,8], [6,7,83,5]]

def plotting_function(data, color_map=plt.cm.viridis, plot_kwds=None):
    colors = color_map(np.linspace(0,1,len(data)))

    for i, y in enumerate(data):
        x_axis = range(len(y))
        plt.plot(x_axis, y, color=colors[i])

plotting_function(data)        

在此处输入图片说明

回答第二个问题,您可以使用以下方法传递所需的颜色图:

plotting_function(data, color_map=plt.cm.jet) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章