ValueError:无效的RGBA参数:'rgbkymc'

发布于 2021-01-29 14:58:29

train_class = train_df['Class'].value_counts().sortlevel()
my_colors = 'rgbkymc'  #red, green, blue, black, etc.
train_class.plot(kind='bar', color=my_colors)
plt.grid()
plt.show()

我越来越:

Value Error : Invalid RGBA argument : 'rgbkymc'

检查所有内容后,我无法得知出现此错误的原因,这似乎很好。

有人可以帮我找出错误吗?

KeyError                                  Traceback (most recent call last)
~\Anaconda3\lib\site-packages\matplotlib\colors.py in to_rgba(c, alpha)
131     try:
--> 132         rgba = _colors_full_map.cache[c, alpha]
133     except (KeyError, TypeError):  # Not in cache, or unhashable.

KeyError: ('rgbkymc', None)
关注者
0
被浏览
84
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Dataframe.plot()实际上并不
    需要color的参数。你必须驱动matplotlib.pyplot.bar()直接调用,如果你想使用的颜色简单的序列(但要注意,有更好的选择,下面列出)。

    如果你决定使用matplotlib.pyplot.bar()直接,再考虑到它的color参数,那么只需要无论是 单一
    有效的颜色值
    ,那么'r'或者'k',或 序列
    这样的颜色值(在对文件bar()的调用它
    数组一样 )。一个 列表 的名称将工作:

    my_colors = ['r', 'g', 'b', 'k', 'y', 'm', 'c']  # red, green, blue, black, etc.
    
    plt.bar(len(train_class), train_class, color=my_colors)
    

    文档指出,序列的长度应等于绘制的条数:

    可选参数 coloredgecolorlinewidthxerryerr 可以是标量或长度等于条数的序列。

    但是,将 颜色映射
    传递到Dataframe.plot()此处比较容易。彩色映射是获得不同条形颜色的便捷途径。您可以传入一个作为colormap关键字参数,它可以是一个命名映射(作为字符串):

    train_class.plot(kind='bar', colormap='Paired')
    

    matplotlib.cm模块中的实际matplotlib颜色图对象:

    from matplotlib import cm
    
    train_class.plot(kind='bar', colormap=cm.Paired)
    

    如果您要坚持使用matplotlib.pyplot.bar(),但是要使用颜色表,请根据颜色表创建一系列颜色。熊猫np.linspace()为此使用,因此我们在这里也这样做:

    import numpy as np
    
    paired_colors = cm.Paired(np.linspace(0, 1, num=len(train_class))
    plt.bar(len(train_class), train_class, color=paired_colors)
    

    对于条形图,我会选择定性的颜色图;每个名称都是cmcolormap模块的属性。上面cm.Paired是一个这样的颜色图。以0.0到1.0之间的浮点数序列调用颜色图,可以返回在该范围的每个“百分比”处拾取的颜色。您也可以传入整数序列来索引各个颜色。

    返回到Pandas,您还可以根据matplotlib.colors.ListedColormap实例选择一系列颜色来创建一个颜色图:

    from matplotlib.colors import ListedColormap
    
    my_colors = ['r', 'g', 'b', 'k', 'y', 'm', 'c']  # red, green, blue, black, etc.
    my_colormap = ListedColormap(my_colors)
    

    然后将其传递给数据框.plot()调用:

    train_class.plot(kind='bar', colormap=my_colormap)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看