2017-12-05 4 views
0

Ich möchte, dass der Titel in der Legende meiner Matplotlib-Figur vom Inhalt der Legende weiter entfernt ist. Derzeit habe ich folgendes: Current legend, with title too close to contentLegend Titelblock in Matplotlib

Ich sehe die set_title Funktion der Legend Klasse nimmt ein prop Wörterbuch, das der in der text properties page beschrieben sein sollte. Dieser enthält das Feld bbox, in dem eine pad Eigenschaft hinzugefügt werden kann. Aber wenn ich so etwas wie die folgenden

legend.set_title('Legend', prop={'bbox':{'pad':somepad}}) 

Python versuchen beklagt, dass bbox ist ein ungültiger Parameter.

Ich benutze Matplotlib 2.1.0 unter Python 3.6.3 auf Arch Linux.


Eine offensichtliche Abhilfe einen Zeilenumbruch hinzufügen würde, wie folgt aus:

legend.set_title('Legend\n ') 

Obwohl man könnte das Ergebnis gefällt, hat matplotlib den großen Vorteil, dass alles bis ins kleinste Detail konfiguriert werden kann, so dass ich Ich suche nach einer Lösung, die mir eine feinere Kontrolle über diesen Abstand gibt.

+0

'prop'ist für' FontProperties', nicht 'Text' Eigenschaften. – Goyo

Antwort

0

Natürlich ist die Eingabe eines Zeilenumbaus im Titeltext als legend.set_title('Legend\n ') eine gültige Option.

Wenn Sie nicht mögen, dass Sie die Trennung zwischen Titel und Legende Griff Box

legend._legend_box.sep = 20 

Komplettes Beispiel manuell als

einstellen:

import matplotlib.pyplot as plt 

plt.plot([1,2], label="some") 
plt.plot([1,3], label="label") 

legend = plt.legend(title="Legend title", ncol=2) 
legend._legend_box.sep = 20 

plt.show() 

enter image description here

Die Standard-Trennung ist labelspacing * fontsize, daher

plt.rcParams["legend.labelspacing"] * plt.rcParams["font.size"] == 0.5 * 10 == 5