Цвет гистограмм и их метки противоречивы

вы не можете вызвать

number.equals(number2);

, потому что, если число равно Double, а number2 - Integer, они не будут одного класса, и вы получите исключение, сообщающее вам об этом факте.

Вы сами можете написать класс сравнения, который принимает объекты Number, но вам нужно будет учитывать различные подклассы Number

1
задан Homo_sapiens 18 January 2019 в 01:59
поделиться

1 ответ

Цвета - это уровень вашего индекса, поэтому используйте его для указания цветов. Измените строку кода на:

counts.plot(kind='bar', title='Counts by Wine Color and quality', 
            color=counts.index.get_level_values(1), alpha=.7)

enter image description here


В этом случае просто оказывается, что matplotlib может интерпретировать значения в вашем индексе в виде цветов. В общем, вы могли бы сопоставить уникальные значения распознаваемым цветам, например:

color = counts.index.get_level_values(1).map({'red': 'green', 'white': 'black'})

enter image description here


pandas что-то делает с порядком построения, но вы всегда можете вернуться к matplotlib для более надежной циклической обработки цветов. Хитрость заключается в том, чтобы преобразовать color в категориальную переменную, чтобы она всегда отображалась после groupby, позволяя указывать только список ['red', 'white']

import matplotlib.pyplot as plt

wine_df['color'] = wine_df.color.astype('category')
counts = wine_df.groupby(['quality', 'color']).count()['pH'].fillna(0)

ind = np.arange(len(counts))
plt.bar(ind, height=counts.values, color=['red', 'white'])
_ = plt.xticks(ind, counts.index.values, rotation=90)
plt.ylim(0,150)  # So we an see (9, white)
plt.show()

enter image description here

0
ответ дан ALollz 18 January 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: