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

Python ValueError:无效的RGBA参数:';rgbkymc';,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我得到: 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 : In

我得到:

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'
Dataframe.plot()
实际上不接受
color
参数。如果你想使用简单的颜色序列,你必须直接拨打电话(但请注意,下面列出了更好的选项)

如果您决定直接使用
matplotlib.pyplot.bar()
,那么请考虑它的
color
参数,然后只接受一个so
'r'
'k'
颜色值序列(类似于数组的调用)。名单将起作用:

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)
文件规定,序列长度应等于绘制的条数:

可选参数color、edgecolor、linewidth、xerr和yerr可以是标量,也可以是长度等于条数的序列

但是,在这里将颜色映射传递到
Dataframe.plot()
更容易。作为一个方便和快速的路径,以独特的酒吧颜色。您可以将一个作为
colormap
关键字参数传入,这可以是命名映射(作为字符串):

或来自
matplotlib.cm
模块的实际matplotlib colormap对象:

train_class.plot(kind='bar', colormap='Paired')
如果您想继续使用
matplotlib.pyplot.bar()
,但要使用颜色映射,请从颜色映射创建一系列颜色。Pandas为此使用了
np.linspace()
,因此我们在这里也这样做:

from matplotlib import cm

train_class.plot(kind='bar', colormap=cm.Paired)
对于条形图,我会选择一个;每个名称都是
cm
colormap模块的一个属性。在上面,
cm.Paired
就是这样的颜色映射。使用介于0.0和1.0之间的浮动序列调用颜色贴图,可以返回在范围的每个“百分比”处拾取的颜色。您也可以传递一系列整数来索引各个颜色

回到Pandas,您也可以从手工挑选的颜色序列创建一个颜色贴图,带有:

然后将其传递到数据帧
.plot()
调用:

from matplotlib.colors import ListedColormap

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

该问题需要稍作修改,因为它首先会引起以下错误:

```AttributeError:“Series”对象没有属性“sortlevel”``` 这是因为自版本0.20.0以来已弃用。你应该在它的位置上使用

另外,在
plot
命令的
color
参数中,表示颜色的字母需要在列表中提供,而不是在字符串中提供。你可以在网上了解更多

因此,您可以使用以下代码:

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

也许您是在寻找
colormap
参数?是的,我会试试this@MartijnPieters谢谢你的更新,不过我还是尝试了一下,并且制作了我的颜色列表
[(0.57999999999996,0.57999999996,0.5799999999996),(0.628,0.628,0.628,0.628)…]
还有更多,我在pandas
plot
函数中做了
color=colors
,但它给了我所有的黑条…@U10 Forward:实际上,我误读了评论,把事情弄糊涂了
DataFrame.plot
不接受
colors
参数。完全仅支持颜色映射。很抱歉,这里的一位评论员把我弄糊涂了,把我扔了。@U10 Forward:对,重新编写答案是为了正确回答问题和您的情况。我的一些值为零,因此我得到
ValueError:无效的RGBA参数:0.0
@U10 Forward:
0.0
不是一个;如果
0.0
应该是黑色的,那么您可以使用
(0,0,0.)
(0,0,0,0.)
“#000000”
”#00000000”
“k”
“黑色”
xkcd:black
“0.0”
(后者是字符串,而不是浮点数)。
from matplotlib.colors import ListedColormap

my_colors = ['r', 'g', 'b', 'k', 'y', 'm', 'c']  # red, green, blue, black, etc.
my_colormap = ListedColormap(my_colors)
train_class.plot(kind='bar', colormap=my_colormap)
train_class = train_df['Class'].value_counts().sort_index()
my_colors = ['r', 'g', 'b', 'k', 'y', 'm', 'c']  #red, green, blue, black, 'yellow', 'magenta' & 'cyan'
train_class.plot(kind = 'bar', color = my_colors)
plt.grid()
plt.show()
my_colors = ['r', 'g', 'b', 'k', 'y', 'm', 'c']  #red, green, blue, black, 'yellow', 'magenta' & 'cyan'
train_class_distribution.plot(kind='bar',color=my_colors)