ValueError: Неверный аргумент RGBA: 'rgbkymc'
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()
Ошибка получения значения: неверный аргумент RGBA: '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)
3 ответа
color
Аргумент принимает только одно допустимое значение цвета, поэтому 'r'
или же 'k'
или последовательность таких значений цвета ( документация дляbar()
называет это массивом, как). Список имен будет работать:
my_colors = ['r', 'g', 'b', 'k', 'y', 'm', 'c'] # red, green, blue, black, etc.
В документации говорится, что последовательность должна быть равна длине нанесенных столбцов:
Необязательные аргументы color, edgecolor, linewidth, xerr и yerr могут быть либо скалярами, либо последовательностями длины, равными количеству баров.
Вы также можете рассмотреть цветовые карты как удобный и быстрый путь к определенным цветам полос; вы не можете передать их напрямую, но вы можете создать свою серию цветов из цветовой карты после импорта:
import matplotlib.pyplot as plt
paired_colors = plt.cm.Paired(range(len(train_class)))
train_class.plot(kind='bar', color=paired_colors)
Для гистограмм я бы выбрал качественную цветовую карту; каждое имя является атрибутом plt.cm
модуль.
Вопрос требует небольшого изменения, так как сначала возникнет следующая ошибка:
AttributeError: 'Series' object has no attribute '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()
Спасибо!
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)