#python-3.x #pandas #matplotlib #colors
#python-3.x #панды #matplotlib #Цвет
Вопрос:
color = []
for key,value in ms.iterrows():
if(value['Color']=='Blue'):
color.append('b')
elif(value['Color']=='Green'):
color.append('g')
elif(value['Color']=='Red'):
color.append('r')
elif(value['Color']=='Yellow'):
color.append('y')
elif(value['Color']=='Orange'):
color.append('o')
else:
color.append('k')
ax =ms[['Height','Color']].plot(x='Color', kind='bar', title="Correlation",
figsize=(15,10), color=color legend=True, fontsize=12)
ax.set_xlabel("Colors", fontsize=12)
ax.set_ylabel("Height", fontsize=12)
Мое намерение состоит в том, чтобы построить гистограмму, которая показывает цвет в зависимости от высоты. Мне удалось это сделать. Тем не менее, я бы хотел, чтобы каждая из полос отображала соответствующий цвет. В соответствии с набором данных я бы хотел, чтобы 1-я строка была красной … и так далее. Я попытался добавить цвет, но он по-прежнему показывает только 1 цвет.
Комментарии:
1. Если дубликат здесь не помогает, пожалуйста, хотя бы покажите, насколько
color
аргумент не работает для вас.2. Я добавил раздел «Цвет» к существующей проблеме, но он по-прежнему показывает тот же результат. Цвет столбчатой диаграммы не изменился.
Ответ №1:
Хитрость заключается в том, чтобы создать многоколоночный фрейм данных и использовать stacked=True
опцию.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame({"Height" : [5,3,6,4],
"Color" : ["Blue", "Green", "Red", "Yellow"]})
color = []
for key,value in df.iterrows():
if(value['Color']=='Blue'):
color.append('b')
elif(value['Color']=='Green'):
color.append('g')
elif(value['Color']=='Red'):
color.append('r')
elif(value['Color']=='Yellow'):
color.append('y')
elif(value['Color']=='Orange'):
color.append('o')
else:
color.append('k')
df2 = pd.DataFrame(np.diag(df["Height"]), columns=df["Color"], index=df["Color"])
ax = df2.plot(kind='bar', title="Correlation", color=color, legend=True,
fontsize=12, stacked=True)
ax.set_xlabel("Colors", fontsize=12)
ax.set_ylabel("Height", fontsize=12)
plt.show()