вы не можете вызвать
number.equals(number2);
, потому что, если число равно Double, а number2 - Integer, они не будут одного класса, и вы получите исключение, сообщающее вам об этом факте.
Вы сами можете написать класс сравнения, который принимает объекты Number, но вам нужно будет учитывать различные подклассы Number
Цвета - это уровень вашего индекса, поэтому используйте его для указания цветов. Измените строку кода на:
counts.plot(kind='bar', title='Counts by Wine Color and quality',
color=counts.index.get_level_values(1), alpha=.7)
В этом случае просто оказывается, что matplotlib
может интерпретировать значения в вашем индексе в виде цветов. В общем, вы могли бы сопоставить уникальные значения распознаваемым цветам, например:
color = counts.index.get_level_values(1).map({'red': 'green', 'white': 'black'})
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()