Ich erstelle eine Figur in Matplotlib wie folgt:
from matplotlib import pyplot as plt
fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')
Ich möchte Schriftgrößen für den Figurentitel und die Achsenbeschriftungen angeben. Alle drei müssen unterschiedliche Schriftgrößen haben, daher ist das Festlegen einer globalen Schriftgröße ( mpl.rcParams['font.size']=x
) nicht das, was ich möchte. Wie lege ich die Schriftgrößen für den Figurentitel und die Achsenbeschriftungen einzeln fest?
python
matplotlib
vasek1
quelle
quelle
mpl.rcParams['font.size'] = 20
und Werte auf 10 und 14 zu ändern. Zuerst stellte ich fest, dass ich Fehler bekam, es sei denn, ich wechseltempl
zuplt
. Diese Änderung löschte den Fehler, aber dann hatte die Codezeile keine Auswirkung auf meine Titel oder Beschriftungen. Sicher, dass diese Syntax richtig ist?mpl
Befehls verwendet haben?Antworten:
Funktionen mit Text zu tun , wie
label
,title
etc. akzeptieren Parameter gleich wiematplotlib.text.Text
. Für die Schriftgröße können Sie verwendensize/fontsize
:Enthält und für globale Einstellungen
title
undlabel
Größen . (Von der Seite):mpl.rcParams
axes.titlesize
axes.labelsize
(Soweit ich sehen kann, gibt es keine Möglichkeit, Größen separat festzulegen
x
und zuy
kennzeichnen.)Und ich sehe, das
axes.titlesize
hat keinen Einflusssuptitle
. Ich denke, Sie müssen das manuell einstellen.quelle
mpl.rcParams
. Ich habe meine Antwort bearbeitet.plt.rcParams.update({'axes.titlesize': 'small'})
rcParams
Verwenden Sie über den Linkfigure.titlesize
zusätzlich zuaxes.titlesize
.python -c 'import matplotlib as mpl; print(mpl.__version__); print("figure.titlesize" in mpl.rcParams.keys())'
. Ergebnis ist1.5.1
,True
. 1) Welche Version von matplotlib verwenden Sie? Welche Version von Python? 2) Könnte es ein Fehler sein, den es aus irgendeinem Grund akzeptiert,str
aber nichtunicode
in Py2?Sie können dies auch global über ein rcParams-Wörterbuch tun:
quelle
'x-large'
?pylab.rcParams.keys()
diese Option , um die vollständige Liste der Parameter anzuzeigen.ax.set_title('some title', fontsize=15)
,ax.set_xlabel('some xlabel', fontsize=12)
? Es scheint, als würdercParams
nur Zeichenfolgen akzeptiert.'axes.labelsize': 32,
Wenn Sie es gewohnt sind,
ax
Objekte zum Plotten zu verwenden, ist es möglicherweiseax.xaxis.label.set_size()
einfacher, sich daran zu erinnern, oder zumindest einfacher, die Registerkarte in einem Ipython-Terminal zu verwenden. Es scheint eine Neuzeichnungsoperation zu benötigen, um den Effekt zu sehen. Zum Beispiel:Ich kenne keine ähnliche Methode, um die Größe des Untertitels nach seiner Erstellung festzulegen.
quelle
fig.suptitle('test title', fontsize = 20)
scheint zu funktionieren.ax.set_xlabel('xlabel', fontsize = 20)' also works, in which case we can do away with
ax.xaxis.label.set_size (20) `.ax.xaxis.label.set_size()
wenn ich interaktiv mit einem Ipython- Plot arbeite und eine schnelle visuelle Beurteilung einer Vielzahl von Schriftgrößen vornehmen möchte.plt.xlabel()
vs.,ax.set_xlabel()
wie Sie sagen) sind sie äquivalent, mit der Einschränkung, dass dieplt.*
Funktionen auf der aktuellen Achse / Figur funktionieren . Wenn Sie also eine Figur mit mehreren Achsen einrichten, möchten Sie wahrscheinlich explizite Aufrufe verwendenax1.set_xlabel()
, um Verwirrung zu vermeiden.Um nur die Schriftart des Titels (und nicht die Schriftart der Achse) zu ändern, habe ich Folgendes verwendet:
Das fontdict akzeptiert alle kwargs aus matplotlib.text.Text .
quelle
Das globale Einstellen der Schriftgrößen über
rcParams
sollte mit erfolgenDie Standardeinstellungen können mit wiederhergestellt werden
Sie können dies auch tun , indem sie die Schaffung eines Stylesheet im
stylelib
Verzeichnis unter dem matplotlib Konfigurationsverzeichnis (Sie können Ihre Konfigurationsverzeichnis von bekommenmatplotlib.get_configdir()
). Das Stylesheet-Format istWenn Sie ein Stylesheet haben
/path/to/mpl_configdir/stylelib/mystyle.mplstyle
, können Sie es über verwendenSie können auch eine matplotlibrc-Datei erstellen (oder ändern), die das Format gemeinsam nutzt
Abhängig davon, welche matplotlibrc-Datei Sie ändern, werden diese Änderungen nur für das aktuelle Arbeitsverzeichnis, für alle Arbeitsverzeichnisse ohne matplotlibrc-Datei oder für alle Arbeitsverzeichnisse ohne matplotlibrc-Datei und für keine andere matplotlibrc-Datei verwendet wurde angegeben. Weitere Informationen finden Sie in diesem Abschnitt der Seite zum Anpassen von matplotlib.
Eine vollständige Liste der
rcParams
Tasten können über abgerufen werdenplt.rcParams.keys()
, aber für die Einstellung Schriftgrößen Sie haben (kursiv von zitierte hier )axes.labelsize
- Schriftgröße der x- und y-Beschriftungenaxes.titlesize
- Schriftgröße des Achsentitelsfigure.titlesize
- Größe des Figurentitels (Figure.suptitle()
)xtick.labelsize
- Schriftgröße der Häkchenytick.labelsize
- Schriftgröße der Häkchenlegend.fontsize
- Schriftgröße für Legenden (plt.legend()
,fig.legend()
)legend.title_fontsize
- Die Schriftgröße für Legendentitel entsprichtNone
den Standardachsen. In dieser Antwort finden Sie ein Verwendungsbeispiel.Alle akzeptieren String-Größen
{'xx-small', 'x-small', 'smaller', 'small', 'medium', 'large', 'larger', 'x-large', 'xxlarge'}
oder einfloat
Inpt
. Die Zeichenfolgengrößen werden relativ zur Standardschriftgröße definiert, die durch angegeben wirdfont.size
- Die Standardschriftgröße für Text in Pkt. 10 pt ist der StandardwertDarüber hinaus kann das Gewicht von angegeben werden (allerdings nur für den Standardwert)
font.weight
- Die Standardgewichtung der von verwendeten Schriftarttext.Text
. Akzeptiert{100, 200, 300, 400, 500, 600, 700, 800, 900}
oder'normal'
(400),'bold'
(700)'lighter'
und'bolder'
( relativ zum aktuellen Gewicht ).quelle
Eine alternative Lösung zum Ändern der Schriftgröße besteht darin, den Abstand zu ändern. Wenn Python Ihr PNG speichert, können Sie das Layout über das sich öffnende Dialogfeld ändern. Der Abstand zwischen den Achsen und die Polsterung können zu diesem Zeitpunkt geändert werden.
quelle
Platz
right_ax
vorset_ylabel()
ax.right_ax.set_ylabel('AB scale')
quelle
7 (beste Lösung)
6 (etwas schlechtere Lösung)
quelle