898 Stimmen

Wie stelle ich die Schriftgröße für den Titel der Abbildung und die Achsenbeschriftung ein?

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 Titel der Abbildung und die Achsenbeschriftungen festlegen. Ich brauche für alle drei unterschiedliche Schriftgrößen, also muss ich eine globale Schriftgröße festlegen ( mpl.rcParams['font.size']=x ) ist nicht das, was ich will. Wie kann ich die Schriftgröße für den Titel der Abbildung und die Achsenbeschriftungen individuell einstellen?

1233voto

Avaris Punkte 34633

Funktionen zum Umgang mit Text wie label , title usw. akzeptieren die gleichen 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')

Für die globale Einstellung title et label Größen, mpl.rcParams enthält axes.titlesize et 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 sehen kann, gibt es keine Möglichkeit, die x et y Etikettengrößen separat).

Und ich sehe, dass axes.titlesize beeinflusst nicht suptitle . Ich schätze, Sie müssen das manuell einstellen.

151voto

tsando Punkte 4184

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)

140voto

spinup Punkte 4055

Wenn Sie eher daran gewöhnt sind, mit ax Objekte zum Plotten zu verwenden, finden Sie vielleicht die ax.xaxis.label.set_size() leichter zu merken, oder zumindest leichter zu finden, indem man tab in einem ipython-Terminal benutzt. Es scheint, dass man danach einen Neuaufbau braucht, 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 Größe des Haupttitels nach dessen Erstellung festzulegen.

56voto

tammoj Punkte 848

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 akzeptiert alle kwargs von matplotlib.text.Text .

48voto

William Miller Punkte 9564

Per der offizielle Leitfaden , Verwendung von pylab wird nicht mehr empfohlen. matplotlib.pyplot sollte stattdessen direkt verwendet werden.

Globale Einstellung der Schriftgröße über rcParams sollte erfolgen mit

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 wiederhergestellt werden mit

plt.rcParams.update(plt.rcParamsDefault)

Sie können dies auch tun, indem Sie eine Formatvorlage で、その stylelib Verzeichnis unter dem matplotlib-Konfigurationsverzeichnis (Sie können Ihr Konfigurationsverzeichnis von matplotlib.get_configdir() ). Das Format der Formatvorlage ist

axes.labelsize: 16
axes.titlesize: 16

Wenn Sie eine Formatvorlage unter /path/to/mpl_configdir/stylelib/mystyle.mplstyle dann können Sie es über

plt.style.use('mystyle')

# or, for a single section

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

Sie können auch eine Datei erstellen (oder ändern) matplotlibrc-Datei die das gleiche Format haben

axes.labelsize = 16
axes.titlesize = 16

Je nachdem, welche matplotlibrc-Datei Sie ändern, werden diese Änderungen nur für das aktuelle Arbeitsverzeichnis verwendet, für alle Arbeitsverzeichnisse, die pas eine matplotlibrc-Datei haben, oder für alle Arbeitsverzeichnisse, die eine haben pas eine matplotlibrc-Datei haben und in denen keine andere matplotlibrc-Datei angegeben wurde. Siehe dieser Abschnitt auf der Seite Matplotlib anpassen für weitere Details.

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

  • axes.labelsize - Schriftgröße der x- und y-Beschriftung
  • axes.titlesize - Schriftgröße des Achsentitels
  • figure.titlesize - Größe des Abbildungstitels ( Figure.suptitle() )
  • xtick.labelsize - Schriftgröße der Häkchenbeschriftung
  • ytick.labelsize - Schriftgröße der Häkchenbeschriftung
  • legend.fontsize - Schriftgröße für Legenden ( plt.legend() , fig.legend() )
  • legend.title_fontsize - Schriftgröße für Legendentitel, None auf die gleichen Werte wie die Standard-Achsen gesetzt. Siehe diese Antwort für ein Anwendungsbeispiel.

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

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

Zusätzlich kann das Gewicht (allerdings nur für den Standard) durch

  • font.weight - Das Standardgewicht der Schrift, die von text.Text . Akzeptiert {100, 200, 300, 400, 500, 600, 700, 800, 900} ou 'normal' (400), 'bold' (700), 'lighter' et 'bolder' ( relativ zum aktuellen Gewicht ).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X