Wie stelle ich die Schriftgröße des Bildtitels und der Achsenbeschriftung ein?

Lesezeit: 9 Minuten

Benutzeravatar von vasek1
Vasek1

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 Abbildungstitel und die Achsenbeschriftungen festlegen. Ich brauche alle drei, um unterschiedliche Schriftgrößen zu haben, also lege eine globale Schriftgröße fest (mpl.rcParams['font.size']=x) ist nicht das, was ich will. Wie stelle ich Schriftgrößen für den Bildtitel und die Achsenbeschriftungen individuell ein?

  • Ich war neugierig, also habe ich versucht, Ihre hinzuzufügen mpl.rcParams['font.size'] = 20 und versuchte, die Werte auf 10 und 14 zu ändern. Zuerst stellte ich fest, dass ich Fehler bekam, es sei denn, ich änderte mpl zu plt. Diese Änderung hat den Fehler gelöscht, aber dann hatte die Codezeile keine Auswirkung auf meine Titel oder Labels. Sicher, dass diese Syntax richtig ist?

    – TMWP

    30. März 2017 um 18:20 Uhr

  • Jetzt denke ich aus den Kommentaren zur akzeptierten Antwort, dass das Problem meine import-Anweisung sein könnte, obwohl es mir ein Rätsel ist, warum es keinen Fehler auslöst, wenn ich den Befehl nicht importiert habe. Gibt es eine andere Importzeile, die Sie beim Testen der mpl Befehl?

    – TMWP

    30. März 2017 um 18:31 Uhr

  • @luc – Der obige Link ist meiner Meinung nach abgelaufen. Da steht – “Seite nicht gefunden”. Könntest du bitte den Link aktualisieren, bitte?

    – Piyush Verma

    18. Juni 2021 um 19:05 Uhr

Benutzeravatar von Avaris
Avaris

Funktionen, die mit Text umgehen, wie z label, titleusw. akzeptieren Parameter wie matplotlib.text.Text. Für die Schriftgröße können Sie verwenden size/fontsize:

from matplotlib import pyplot as plt    

fig = plt.figure()
plt.plot(data)
fig.suptitle('test title', fontsize=20)
plt.xlabel('xlabel', fontsize=18)
plt.ylabel('ylabel', fontsize=16)
fig.savefig('test.jpg')

Zur globalen Einstellung title und label Größen, mpl.rcParams enthält axes.titlesize und axes.labelsize. (Von der Seite):

axes.titlesize      : large   # fontsize of the axes title
axes.labelsize      : medium  # fontsize of the x any y labels

(Soweit ich sehe, gibt es keine Möglichkeit, es einzustellen x und y Etikettengrößen separat.)

Und das sehe ich axes.titlesize betrifft nicht suptitle. Ich denke, das musst du manuell einstellen.

  • Danke! Gibt es eine Möglichkeit, dies global, aber explizit für (untertitel, xlabel, ylabel) festzulegen? Ich mache viele Diagramme und möchte es nur einmal spezifizieren …

    – Vasek1

    16. September 2012 um 6:12 Uhr

  • @vasek1: Ich dachte, du wolltest keine globale Einstellung :). Dafür braucht man mpl.rcParams. Ich habe meine Antwort bearbeitet.

    – Avaris

    16. September 2012 um 6:23 Uhr

  • An alle anderen wie mich, die nach einer Lösung suchen, um die Titelgröße zu ändern: plt.rcParams.update({'axes.titlesize': 'small'})

    – tommy.carstensen

    5. Juni 2015 um 13:17 Uhr

  • Von dem rcParams verlinken, verwenden figure.titlesize zusätzlich zu axes.titlesize.

    – Verrückter Physiker

    15. Dezember 2015 um 19:05 Uhr

  • @AlexanderMcFarlane. Ich rannte python -c 'import matplotlib as mpl; print(mpl.__version__); print("figure.titlesize" in mpl.rcParams.keys())'. Ergebnis ist 1.5.1, True. 1) Welche Version von matplotlib verwendest du? Welche Python-Version? 2) Könnte es ein Fehler sein, der aus irgendeinem Grund akzeptiert wird str aber nicht unicode in Py2?

    – Verrückter Physiker

    30. Mai 2016 um 1:18 Uhr

Sie können dies auch global über ein rcParams-Wörterbuch tun:

import matplotlib.pylab as pylab
params = {'legend.fontsize': 'x-large',
          'figure.figsize': (15, 5),
         'axes.labelsize': 'x-large',
         'axes.titlesize':'x-large',
         'xtick.labelsize':'x-large',
         'ytick.labelsize':'x-large'}
pylab.rcParams.update(params)

  • Was sind andere Größen außer 'x-large'?

    – Martin Thoma

    11. Oktober 2017 um 7:00 Uhr

  • ‘xx-klein’, ‘x-klein’, ‘klein’, ‘mittel’, ‘groß’, ‘x-groß’, ‘xx-groß’. Sehen matplotlib.org/api/…

    – Tsando

    11. Oktober 2017 um 8:37 Uhr

  • Verwenden pylab.rcParams.keys() um die vollständige Liste der Parameter anzuzeigen.

    – Nirmal

    26. Oktober 2018 um 5:34 Uhr

  • Vielen Dank. Gibt es eine Möglichkeit, explizite numerische Größen für den Titel und die Achsenbeschriftungen global festzulegen, anstatt dies immer zu tun ax.set_title('some title', fontsize=15), ax.set_xlabel('some xlabel', fontsize=12)? Wie es scheint rcParams akzeptiert nur Zeichenketten.

    – Timb

    20. Januar 2019 um 15:57 Uhr

  • Sie können auch Zahlen verwenden … 'axes.labelsize': 32,

    – Mimorale

    12. Juni 2019 um 21:38 Uhr

SpinUp __ Benutzeravatar von Davis
SpinUp __ Ein Davis

Wenn Sie mehr an die Verwendung gewöhnt sind ax Objekte zum Plotten finden Sie vielleicht ax.xaxis.label.set_size() leichter zu merken oder zumindest einfacher zu finden, wenn Sie die Registerkarte in einem Ipython-Terminal verwenden. Es scheint, dass danach eine Neuzeichnungsoperation erforderlich ist, um den Effekt zu sehen. Zum Beispiel:

import matplotlib.pyplot as plt

# set up a plot with dummy data
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x,y)

# title and labels, setting initial sizes
fig.suptitle('test title', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize="medium")   # relative to plt.rcParams['font.size']

# setting label sizes after creation
ax.xaxis.label.set_size(20)
plt.draw()

Ich kenne keine ähnliche Möglichkeit, die Untertitelgröße nach der Erstellung festzulegen.

  • 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)`.

    – T_T

    14. Juni 2018 um 4:03 Uhr


  • @T_T Das stimmt, und diese Formen ähneln der obigen Antwort von Avaris. Ich füge sie der Vollständigkeit halber hinzu. Ich finde immer noch eine Verwendung für ax.xaxis.label.set_size() wenn ich interaktiv mit einem arbeite Ipython Plot und ich möchte eine schnelle visuelle Bewertung verschiedener Schriftgrößen vornehmen.

    – SpinUp __ A Davis

    15. Juni 2018 um 18:12 Uhr

  • Wissen Sie, ob es einen (versteckten) Unterschied zwischen der Verwendung von Axtobjekten und Figurenobjekten gibt oder ob beide vollkommen gleichwertig sind? Warum gibt es für einige Funktionen unterschiedliche Schnittstellen? (plt.xlabel() vs. ax.set_xlabel())

    – Normanius

    14. November 2018 um 14:33 Uhr

  • @normanius, wenn Sie im obigen Beispiel Axt und Feige meinen, handelt es sich um ganz unterschiedliche Objekte – Feige ist die Gesamtfigur, die mehrere Achsen enthalten kann. Feige und Axt haben also unterschiedliche Eigenschaften. In Bezug auf den Unterschied zwischen den Pyplot-Typaufrufen und Objektaufrufen (z plt.xlabel() vs. ax.set_xlabel() wie Sie sagen), sind sie gleichwertig, mit der Einschränkung, dass die plt.* Funktionen arbeiten auf der aktuell Achse/Figur. Wenn Sie also eine Figur mit mehreren Achsen einrichten, möchten Sie wahrscheinlich explizite Aufrufe wie verwenden ax1.set_xlabel() um Verwirrung zu vermeiden.

    – SpinUp __ A Davis

    14. November 2018 um 21:48 Uhr

Benutzeravatar von tammoj
tammoj

Um nur die Schriftart des Titels (und nicht die Schriftart der Achse) zu ändern, habe ich Folgendes verwendet:

import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})

Das Fontdict nimmt alle kwargs ab matplotlib.text.Text.

Benutzeravatar von William Miller
Wilhelm Müller

Pro der offizielle FührerGebrauch von pylab wird nicht mehr empfohlen. matplotlib.pyplot sollte stattdessen direkt verwendet werden.

Schriftgrößen global einstellen über rcParams sollte damit fertig sein

import matplotlib.pyplot as plt
plt.rcParams['axes.labelsize'] = 16
plt.rcParams['axes.titlesize'] = 16

# or

params = {'axes.labelsize': 16,
          'axes.titlesize': 16}
plt.rcParams.update(params)

# or

import matplotlib as mpl
mpl.rc('axes', labelsize=16, titlesize=16)

# or 

axes = {'labelsize': 16,
        'titlesize': 16}
mpl.rc('axes', **axes)

Die Standardeinstellungen können mit wiederhergestellt werden

plt.rcParams.update(plt.rcParamsDefault)

Sie können dies auch tun, indem Sie eine erstellen Stylesheet in dem stylelib Verzeichnis unter der matplotlib-Konfigurationsverzeichnis (Ihr Konfigurationsverzeichnis erhalten Sie von matplotlib.get_configdir()). Das Stylesheet-Format ist

axes.labelsize: 16
axes.titlesize: 16

Wenn Sie ein Stylesheet bei haben /path/to/mpl_configdir/stylelib/mystyle.mplstyle dann kannst du es über verwenden

plt.style.use('mystyle')

# or, for a single section

with plt.style.context('mystyle'):
    # ...

Sie können auch a erstellen (oder ändern). matplotlibrc-Datei die das Format teilt

axes.labelsize = 16
axes.titlesize = 16

Abhängig davon, welche matplotlibrc-Datei Sie ändern, werden diese Änderungen nur für das aktuelle Arbeitsverzeichnis verwendet, für alle Arbeitsverzeichnisse, die dies tun nicht eine matplotlibrc-Datei haben, oder für alle Arbeitsverzeichnisse, die dies tun nicht eine matplotlibrc-Datei haben und wo keine andere matplotlibrc-Datei angegeben wurde. Sehen diese Abteilung der Matplotlib-Anpassungsseite für weitere Details.

Eine vollständige Liste der rcParams Schlüssel können über abgerufen werden plt.rcParams.keys()aber zum Anpassen der Schriftgröße haben Sie (kursiv zitiert aus hier)

  • axes.labelsizeSchriftgröße der x- und y-Beschriftungen
  • axes.titlesizeSchriftgröße des Achsentitels
  • figure.titlesizeGröße des Abbildungstitels (Figure.suptitle())
  • xtick.labelsizeSchriftgröße der Tick-Labels
  • ytick.labelsizeSchriftgröße der Tick-Labels
  • legend.fontsize – Schriftgröße für Legenden (plt.legend(), fig.legend())
  • legend.title_fontsize – Schriftgröße für Legendentitel, None wird auf die gleichen Werte wie die Standardachsen gesetzt. Siehe diese Antwort für ein Verwendungsbeispiel.

alle akzeptieren Zeichenfolgengrößen {'xx-small', 'x-small', 'smaller', 'small', 'medium', 'large', 'larger', 'x-large', 'xxlarge'} oder ein float in pt. Die Zeichenkettengrößen werden relativ zur Standardschriftgröße definiert, die durch angegeben wird

  • font.sizedie Standardschriftgröße für Text, angegeben in pts. 10 pt ist der Standardwert

Zusätzlich kann das Gewicht angegeben werden (obwohl es nur für die Standardeinstellung angezeigt wird).

  • font.weight – Die Standardstärke der verwendeten Schriftart text.Text. Akzeptiert {100, 200, 300, 400, 500, 600, 700, 800, 900} oder 'normal' (400), 'bold' (700), 'lighter'und 'bolder' (relativ zum aktuellen Gewicht).

Wenn Sie nicht explizit Figuren- und Achsenobjekte erstellen, können Sie die Schriftgröße des Titels festlegen, wenn Sie den Titel mit erstellen fontdict Streit.

Sie können die Schriftgrößen der x- und y-Beschriftung separat festlegen, wenn Sie die x- und y-Beschriftungen mit erstellen fontsize Streit.

Zum Beispiel:

plt.title('Car Prices are Increasing', fontdict={'fontsize':20})
plt.xlabel('Year', fontsize=18)
plt.ylabel('Price', fontsize=16)

Funktioniert auch mit Seaborn- und Pandas-Plotting (wenn Matplotlib das Backend ist)!

Andere haben Antworten zum Ändern der Titelgröße bereitgestellt, aber für die Beschriftungsgröße der Achsenkreuze können Sie auch die verwenden set_tick_params Methode.

ZB um die Tick-Label-Größe der x-Achse klein zu machen:

ax.xaxis.set_tick_params(labelsize="small")

oder um die Tick-Beschriftung der y-Achse groß zu machen:

ax.yaxis.set_tick_params(labelsize="large")

Sie können auch die eingeben labelsize B. als Gleitkommazahl oder eine der folgenden Zeichenfolgenoptionen: „xx-klein“, „x-klein“, „klein“, „mittel“, „groß“, „x-groß“ oder „xx-groß“.

  • Dies gilt jedoch für die Tick-Beschriftung, nicht für die Achsenbeschriftung.

    – Irene

    18. August 2020 um 10:49 Uhr

  • Ja, mit dem OP hast du recht. Andere Antworten erwähnten jedoch auch die Tick-Label-Größen, und ich dachte, es wäre nützlich für Benutzer, auch über diese Methode Bescheid zu wissen.

    – Etotheipi

    19. August 2020 um 19:44 Uhr

  • Ich habe es aus demselben Grund positiv bewertet 🙂 Aber ich denke, da die Antwort “Achsenetikettengröße” angibt, denke ich, dass sie in “Häkchenetikettengröße” korrigiert werden sollte.

    – Irene

    20. August 2020 um 8:10 Uhr

  • Guter Punkt. Ich habe die Änderungen vorgenommen. Und danke für die positive Bewertung.

    – Etotheipi

    20. August 2020 um 20:15 Uhr

1430650cookie-checkWie stelle ich die Schriftgröße des Bildtitels und der Achsenbeschriftung ein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy