dhr*_*waj 11 python matplotlib python-3.x
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()
Run Code Online (Sandbox Code Playgroud)
我越来越:
Value Error : Invalid RGBA argument : 'rgbkymc'
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会出现此错误,因为我已经检查了所有内容并且看起来很好。
任何人都可以帮我找出错误吗?
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)
Run Code Online (Sandbox Code Playgroud)
Sha*_*fiq 13
该问题需要稍作修改,因为它首先会引发以下错误:
```AttributeError: 'Series' 对象没有属性 'sortlevel'```这是因为sortlevel从 0.20.0 版本开始被弃用。您应该改为使用sort_index代替它。
另外,命令color参数中象征颜色的字母plot需要在列表中提供,而不是在字符串中。您可以在matplotlib上的指定颜色中阅读有关它的更多信息。
因此,您可以使用以下代码:
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()
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 12
Dataframe.plot()实际上并不需要color争论。matplotlib.pyplot.bar()如果您想使用简单的颜色序列,则必须直接驱动调用(但请注意,有更好的选择,如下所列)。
如果您确实决定matplotlib.pyplot.bar()直接使用,那么请考虑到它的color参数仅采用单个有效颜色值、 so'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)
Run Code Online (Sandbox Code Playgroud)
文档指出,序列的长度应与绘制的条形数量相等:
可选参数color、edgecolor、linewidth、xerr和yerr可以是标量或长度等于条数的序列。
但是,将颜色映射传递到Dataframe.plot()此处更容易。颜色映射是通向不同条形颜色的便捷途径。您可以将一个作为colormap关键字参数传入,这可以是一个命名映射(作为字符串):
train_class.plot(kind='bar', colormap='Paired')
Run Code Online (Sandbox Code Playgroud)
或来自matplotlib.cm模块的实际 matplotlib 颜色图对象:
from matplotlib import cm
train_class.plot(kind='bar', colormap=cm.Paired)
Run Code Online (Sandbox Code Playgroud)
如果您想坚持使用matplotlib.pyplot.bar(),但使用颜色图,则从颜色图创建您的一系列颜色。Pandasnp.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)
Run Code Online (Sandbox Code Playgroud)
对于条形图,我会选择一个定性的颜色图;每个名称都是cm颜色图模块的一个属性。在上面,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)
Run Code Online (Sandbox Code Playgroud)
然后将其传递给您的数据帧.plot()调用:
train_class.plot(kind='bar', colormap=my_colormap)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11631 次 |
| 最近记录: |