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?

8voto

nvd Punkte 2538

Ausgehend von den obigen Ausführungen:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

fontPath = "/usr/share/fonts/abc.ttf"
font = fm.FontProperties(fname=fontPath, size=10)
font2 = fm.FontProperties(fname=fontPath, size=24)

fig = plt.figure(figsize=(32, 24))
fig.text(0.5, 0.93, "This is my Title", horizontalalignment='center', fontproperties=font2)

plot = fig.add_subplot(1, 1, 1)

plot.xaxis.get_label().set_fontproperties(font)
plot.yaxis.get_label().set_fontproperties(font)
plot.legend(loc='upper right', prop=font)

for label in (plot.get_xticklabels() + plot.get_yticklabels()):
    label.set_fontproperties(font)

7voto

InvisibleWolf Punkte 787

Ich wollte nur darauf hinweisen, dass sowohl die Herman Schaaf's y Pedro M Duarte's Antworten funktionieren, aber Sie müssen das tun, bevor Sie die subplots() Diese Einstellungen wirken sich nicht auf bereits instanziierte Objekte aus. Ich weiß, dass es nicht einfach ist, aber ich habe einige Zeit damit verbracht, herauszufinden, warum diese Antworten für mich nicht funktionieren, als ich versucht habe, diese Änderungen nach dem Aufruf von subplots() zu verwenden.

Zum Beispiel:

import matplotlib.pyplot as plt
plt.rcParams.update({'font.size': 6,})
fig, ax = plt.subplots()
#create your plot
plt.show()

o

SMALL_SIZE = 8
MEDIUM_SIZE = 10
BIGGER_SIZE = 12

plt.rc('font', size=SMALL_SIZE)          # controls default text sizes
plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
fig, ax = plt.subplots()
#create your plot
plt.show()

6voto

Ich stimme Prof. Huster voll und ganz zu, dass die einfachste Vorgehensweise darin besteht, die Größe der Abbildung zu ändern, was die Beibehaltung der Standardschriftarten ermöglicht. Ich musste dies nur beim Speichern der Abbildung als PDF mit einer bbox_inches-Option ergänzen, weil die Achsenbeschriftungen abgeschnitten wurden.

import matplotlib.pyplot as plt
plt.figure(figsize=(4,3))
plt.savefig('Basic.pdf', bbox_inches='tight')

5voto

Michael H. Punkte 505

Dies ist eine Erweiterung zu Marius Retegan Antwort . Sie können eine separate JSON-Datei mit allen Ihren Änderungen erstellen und diese dann mit rcParams.update laden. Die Änderungen gelten dann nur für das aktuelle Skript. Also

import json
from matplotlib import pyplot as plt, rcParams

s = json.load(open("example_file.json")
rcParams.update(s)

und speichern Sie diese "example_file.json" im selben Ordner.

{
  "lines.linewidth": 2.0,
  "axes.edgecolor": "#bcbcbc",
  "patch.linewidth": 0.5,
  "legend.fancybox": true,
  "axes.color_cycle": [
    "#348ABD",
    "#A60628",
    "#7A68A6",
    "#467821",
    "#CF4457",
    "#188487",
    "#E24A33"
  ],
  "axes.facecolor": "#eeeeee",
  "axes.labelsize": "large",
  "axes.grid": true,
  "patch.edgecolor": "#eeeeee",
  "axes.titlesize": "x-large",
  "svg.fonttype": "path",
  "examples.directory": ""
}

0 Stimmen

Oder mit matplotlib's Styling, die sehr ähnlich zu Ihrer Idee ist: matplotlib.org/stable/tutorials/introductory/customizing.html

3voto

Hugues Punkte 2432

Sie wird in einem Kommentar erwähnt, verdient aber eine eigene Antwort:

Ändern Sie beide figsize= y dpi= in Verbindung, um die Größe der Abbildungen und den Maßstab aller Textbeschriftungen anzupassen:

fig, ax = plt.subplots(1, 1, figsize=(8, 4), dpi=100)

(oder kürzer:)

fig, ax = plt.subplots(figsize=(8, 4), dpi=100)

Das ist ein bisschen kompliziert:

  1. figsize steuert tatsächlich den Maßstab des Textes relativ auf die Ausdehnung der Fläche (sowie auf das Seitenverhältnis der Fläche).

  2. dpi passt die Größe der Abbildung innerhalb des Notizbuchs an (unter Beibehaltung des relativen Maßstabs des Textes und des Seitenverhältnisses der Darstellung).

0 Stimmen

Na klar! Das löst die meisten manuellen Anpassungen.

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