Wie stelle ich die Schriftgröße für den Titel der Abbildung und die Achsenbeschriftung in Matplotlib 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 benötige für alle drei unterschiedliche Schriftgrößen, daher ist das Festlegen einer globalen Schriftgröße (mpl.rcParams['font.size']=x) nicht das, was ich möchte. Wie kann ich die Schriftgrößen für den Titel der Abbildung und die Achsenbeschriftungen einzeln festlegen?

Lösung

Funktionen, die sich mit Text befassen, wie label, title, etc. akzeptieren die gleichen Parameter wie matplotlib.text.Text. Für die Schriftgröße können Sie size/fontsize verwenden:

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 von title und label Größen, enthält mpl.rcParams 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 sehen kann, gibt es keine Möglichkeit, x und y Beschriftungsgrößen separat einzustellen).

Und ich sehe, dass axes.titlesize keinen Einfluss auf suptitle hat. Ich vermute, Sie müssen das manuell einstellen.

Kommentare (9)

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)
Kommentare (5)

Wenn Sie eher daran gewöhnt sind, ax-Objekte zum Plotten zu verwenden, können Sie sich die Funktion ax.xaxis.label.set_size() leichter merken, oder zumindest leichter finden, indem Sie tab in einem ipython-Terminal verwenden. Um den Effekt zu sehen, muss die Grafik danach neu gezeichnet werden. 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 seiner Erstellung zu ändern.

Kommentare (4)