wake-up-neo.net

Wie stelle ich den Schriftgrad für Figurentitel und Achsenbeschriftungen in Matplotlib ein?

Ich erschaffe in Matplotlib eine Figur wie diese:

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

357
vasek1

Funktionen, die sich auf Text beziehen, wie label, title usw., akzeptieren dieselben 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')

Bei der globalen Einstellung von title und label enthält mpl.rcParamsaxes.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, die Etikettengrößen x und y separat festzulegen.)

Und ich sehe, dass axes.titlesizesuptitle nicht beeinflusst. Ich denke, Sie müssen das manuell einstellen.

528
Avaris

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)
57
tsando

Wenn Sie es gewohnt sind, ax-Objekte zum Zeichnen zu verwenden, ist es möglicherweise einfacher, sich die ax.xaxis.label.set_size() zu merken oder zumindest die Registerkarte Tab in einem ipython-Terminal zu finden. Es scheint, dass eine erneute Operation danach 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 Methode, um die Größe des Untertitels nach der Erstellung festzulegen.

23
spinup

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 mit Ausnahme aller Kwargs aus matplotlib.text.Text .

0
tammoj

Eine alternative Lösung zum Ändern der Schriftgröße ist das Ändern der Auffüllung. Wenn Python Ihre PNG-Datei 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.

0
Naz