Modificar a legenda do gráfico da barra de pandas

Fico sempre incomodado quando faço um enredo de bar com pandas e quero mudar os nomes dos rótulos da lenda. Considere, por exemplo, a saída deste código:

import pandas as pd
from matplotlib.pyplot import *

df = pd.DataFrame({'A':26, 'B':20}, index=['N'])
df.plot(kind='bar')

enter image description here Agora, se eu quiser mudar o nome na lenda, eu normalmente tentaria fazer:

legend(['AAA', 'BBB'])

mas acabo com isto:

enter image description here

de facto, a primeira linha tracejada parece corresponder a um remendo adicional.

Por isso, pergunto-me se haverá um truque simples. aqui para mudar os rótulos, ou eu preciso plotar cada uma das colunas de forma independente com matplotlib e definir os rótulos eu mesmo. Obrigado.

Author: Martin Evans, 2015-10-15

2 answers

Mudar de rótulo para Pandas df.plot():

import pandas as pd
from matplotlib.pyplot import *

fig, ax = subplots()
df = pd.DataFrame({'A':26, 'B':20}, index=['N'])
df.plot(kind='bar', ax=ax)
ax.legend(["AAA", "BBB"]);

enter image description here

Editar:

Uma linha a menos:

df = pd.DataFrame({'A':26, 'B':20}, index=['N'])
ax = df.plot(kind='bar')
ax.legend(["AAA", "BBB"]);

enter image description here

 28
Author: Sergey Bushmanov, 2017-08-31 12:33:56

Se precisar de invocar o plot multiply times, também pode usar o argumento "label":

ax = df1.plot(label='df1')
ax = df2.plot(label='df2')

Embora este não seja o caso na pergunta do OP, isto pode ser útil se o DataFrame estiver em formato longo e você usar groupby antes de plotar.

 0
Author: Jonathan, 2018-08-02 14:54:02