2014-05-09 8 views
13

Wie ist es möglich, Legende außerhalb der Handlung zu setzen?Wie lege ich die Legende außerhalb der Handlung mit Pandas

import pandas as pd 
import matplotlib.pyplot as plt 
a = {'Test1': {1: 21867186, 4: 20145576, 10: 18018537}, 
    'Test2': {1: 23256313, 4: 21668216, 10: 19795367}} 

d = pd.DataFrame(a).T 
#print d 

f = plt.figure() 

plt.title('Title here!', color='black') 
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5)) 
d.plot(kind='bar', ax=f.gca()) 
plt.show() 
+13

Eigentlich ist es kein vollständiges Duplikat ... die Frage ist speziell für Pandas. Die folgende Antwort zeigt, wie Sie einer Plot-Funktionsaufruf von 'pandas.DataFrame.plot' eine Achse zuweisen, die es ermöglicht, die 'matplotlib.pyplot'-Verfeinerungen anzuwenden. – slushy

+0

Ja, das ist kein Duplikat und es ist ärgerlich, dass es so markiert ist. – ferrouswheel

Antwort

22

Ich glaube, Sie brauchen plot anrufen, bevor Sie den Aufruf legend hinzufügen.

import pandas as pd 
import matplotlib.pyplot as plt 
a = {'Test1': {1: 21867186, 4: 20145576, 10: 18018537}, 
    'Test2': {1: 23256313, 4: 21668216, 10: 19795367}} 

d = pd.DataFrame(a).T 
#print d 

f = plt.figure() 

plt.title('Title here!', color='black') 
d.plot(kind='bar', ax=f.gca()) 
plt.legend(loc='center left', bbox_to_anchor=(1.0, 0.5)) 
plt.show() 
+1

Allerdings ist die Hälfte der Legende jetzt nicht im Bild? Wie ist es möglich, es zu beheben? – user977828

+0

Es ist wirklich eine separate Frage, aber Sie könnten 'fplots_adjust (rechts = 0.8)' versuchen. – Phil

+3

Wenn Sie nur die Legende verschieben möchten, können Sie die Tatsache nutzen, dass '' plot'' eine matplotlib Achse zurückgibt und '' .legend (bbox_to_anchor = (1,1)) '' am Ende Ihrer plot line of code –

Verwandte Themen