918 Stimmen

Wie man die Schriftgröße auf einer Matplotlib-Plot ändern

Wie kann man die Schriftgröße für alle Elemente (Zecken, Beschriftungen, Titel) auf einem Matplotlib-Plot ändern?

Ich weiß, wie ich die Größe der Häkchen ändern kann, und zwar mit:

import matplotlib 
matplotlib.rc('xtick', labelsize=20) 
matplotlib.rc('ytick', labelsize=20) 

Aber wie kann man den Rest ändern?

71voto

Prof Huster Punkte 858

Hier ist eine völlig verschiedene Ansatz, der überraschend gut funktioniert, um die Schriftgrößen zu ändern:

Ändern Sie die Zahlengröße !

Normalerweise verwende ich einen Code wie diesen:

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(4,3))
ax = fig.add_subplot(111)
x = np.linspace(0,6.28,21)
ax.plot(x, np.sin(x), '-^', label="1 Hz")
ax.set_title("Oscillator Output")
ax.set_xlabel("Time (s)")
ax.set_ylabel("Output (V)")
ax.grid(True)
ax.legend(loc=1)
fig.savefig('Basic.png', dpi=300)

Le site kleiner Sie die Größe der Figur festlegen, wird die größer die Schriftart ist relativ zum Grundstück . Dadurch werden auch die Marker hochskaliert. Beachten Sie, dass ich auch die dpi oder Punkt pro Zoll. Ich habe dies aus einem Beitrag im AMTA (American Modeling Teacher of America) Forum gelernt. Beispiel aus obigem Code: enter image description here

11 Stimmen

Um zu vermeiden, dass die Achsenbeschriftung abgeschnitten wird, speichern Sie die Abbildung mit der Option bbox_inches Argument fig.savefig('Basic.png', bbox_inches="tight")

0 Stimmen

Was ist, wenn ich die Zahl NICHT speichere? Ich zeichne in Juypter Notebook und die resultierenden Achsenbeschriftungen werden abgeschnitten.

0 Stimmen

Danke! Der Hinweis auf die dpi-Einstellungen war äußerst hilfreich für mich, um druckbare Versionen meiner Plots zu erstellen, ohne alle Zeilengrößen, Schriftgrößen usw. anpassen zu müssen.

50voto

Hamed Baziyad Punkte 1806

Sie können verwenden plt.rcParams["font.size"] zur Einstellung font_size in matplotlib und Sie können auch plt.rcParams["font.family"] zur Einstellung font_family in matplotlib . Versuchen Sie dieses Beispiel:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')

label = [1,2,3,4,5,6,7,8]
x = [0.001906,0.000571308,0.0020305,0.0037422,0.0047095,0.000846667,0.000819,0.000907]
y = [0.2943301,0.047778308,0.048003167,0.1770876,0.532489833,0.024611333,0.157498667,0.0272095]

plt.ylabel('eigen centrality')
plt.xlabel('betweenness centrality')
plt.text(0.001906, 0.2943301, '1 ', ha='right', va='center')
plt.text(0.000571308, 0.047778308, '2 ', ha='right', va='center')
plt.text(0.0020305, 0.048003167, '3 ', ha='right', va='center')
plt.text(0.0037422, 0.1770876, '4 ', ha='right', va='center')
plt.text(0.0047095, 0.532489833, '5 ', ha='right', va='center')
plt.text(0.000846667, 0.024611333, '6 ', ha='right', va='center')
plt.text(0.000819, 0.157498667, '7 ', ha='right', va='center')
plt.text(0.000907, 0.0272095, '8 ', ha='right', va='center')
plt.rcParams["font.family"] = "Times New Roman"
plt.rcParams["font.size"] = "50"
plt.plot(x, y, 'o', color='blue')

Please, see the output:

49voto

Andrey Nikishaev Punkte 3609

Utilisez plt.tick_params(labelsize=14)

6 Stimmen

Vielen Dank für den Codeschnipsel, der eine begrenzte, unmittelbare Hilfe sein könnte. Eine richtige Erklärung würde seine Wirkung erheblich verbessern langfristiger Wert indem Sie beschreiben, warum dies eine gute Lösung für das Problem ist und es für zukünftige Leser mit anderen ähnlichen Fragen nützlicher machen würde. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen, einschließlich der Annahmen, die Sie gemacht haben.

4 Stimmen

Wird dadurch nicht nur die Schriftgröße des Häkchens geändert?

37voto

Hier ist, was ich im Allgemeinen in Jupyter Notebook verwende:

# Jupyter Notebook settings

from IPython.core.display import display, HTML
display(HTML("<style>.container { width:95% !important; }</style>"))
%autosave 0
%matplotlib inline
%load_ext autoreload
%autoreload 2

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

# Imports for data analysis
import pandas as pd
import matplotlib.pyplot as plt
pd.set_option('display.max_rows', 2500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.max_colwidth', 2000)
pd.set_option('display.width', 2000)
pd.set_option('display.float_format', lambda x: '%.3f' % x)

#size=25
size=15
params = {'legend.fontsize': 'large',
          'figure.figsize': (20,8),
          'axes.labelsize': size,
          'axes.titlesize': size,
          'xtick.labelsize': size*0.75,
          'ytick.labelsize': size*0.75,
          'axes.titlepad': 25}
plt.rcParams.update(params)

15voto

anishtain4 Punkte 2092

Die Änderungen der rcParams sind sehr granular. Meistens wollen Sie nur alle Schriftgrößen skalieren, damit sie in Ihrer Abbildung besser zu sehen sind. Die Figurengröße ist ein guter Trick, aber dann müssen Sie sie für alle Ihre Figuren übernehmen. Eine andere Möglichkeit (nicht rein matplotlib, oder vielleicht overkill, wenn Sie nicht seaborn verwenden) ist es, nur die Schriftgröße mit seaborn zu setzen:

sns.set_context('paper', font_scale=1.4)

DISCLAIMER: Ich weiß, wenn Sie nur matplotlib verwenden, dann wollen Sie wahrscheinlich nicht ein ganzes Modul nur für die Skalierung Ihrer Plots installieren (ich meine, warum nicht) oder wenn Sie seaborn verwenden, dann haben Sie mehr Kontrolle über die Optionen. Es gibt aber auch den Fall, dass Sie Seaborn in Ihrer virtuellen Umgebung für Datenwissenschaften haben, es aber nicht in diesem Notebook verwenden. Wie auch immer, noch eine andere Lösung.

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