J'essaie d'ajouter la légende qui devrait, selon mon exemple, la sortie:
J'ai essayé plusieurs choses (l'exemple ci-dessous est que 1 des nombreux procès), mais je ne peux pas le faire fonctionner.
Quelqu'un peut-il me dire comment résoudre ce problème?
import pandas as pd
from matplotlib import pyplot as plt
data = [['Apple', 'fruit', 10], ['nanaba', 'fruit', 15], ['salat','veggie', 144]]
data = pd.DataFrame(data, columns = ['Object', 'Type', 'Value'])
colors = {'fruit':'red', 'veggie':'green'}
c = data['Type'].apply(lambda x: colors[x])
bars = plt.bar(data['Object'], data['Value'], color=c, label=colors)
plt.legend()
C'est donc une solution hacky et je suis sûr qu'il y a probablement de meilleures façons de le faire. Ce que vous pouvez faire est de parcourir les parcelles de barre individuelles qui sont invisibles à l'aide de width=0
Avec les couleurs de la parcelle d'origine et spécifiez les étiquettes. Vous devrez cependant faire cela dans un sous-champ.
import pandas as pd
from matplotlib import pyplot as plt
data = [['Apple', 'fruit', 10], ['nanaba', 'fruit', 15], ['salat','veggie', 144]]
data = pd.DataFrame(data, columns = ['Object', 'Type', 'Value'])
colors = {'fruit':'red', 'veggie':'green'}
c = data['Type'].apply(lambda x: colors[x])
ax = plt.subplot(111) #specify a subplot
bars = ax.bar(data['Object'], data['Value'], color=c) #Plot data on subplot axis
for i, j in colors.items(): #Loop over color dictionary
ax.bar(data['Object'], data['Value'],width=0,color=j,label=i) #Plot invisible bar graph but have the legends specified
ax.legend()
plt.show()