Hinweis
Gehen Sie zum Ende, um den vollständigen Beispielcode herunterzuladen.
Text-Eigenschaften und Layout#
Steuerung von Eigenschaften von Text und dessen Layout mit Matplotlib.
matplotlib.text.Text-Instanzen haben eine Vielzahl von Eigenschaften, die über Schlüsselwortargumente für set_title, set_xlabel, text usw. konfiguriert werden können.
Eigenschaft |
Wert Typ |
|---|---|
alpha |
|
backgroundcolor |
beliebige Matplotlib Farbe |
bbox |
|
clip_box |
eine matplotlib.transform.Bbox-Instanz |
clip_on |
bool |
clip_path |
|
color |
beliebige Matplotlib Farbe |
family |
[ |
fontproperties |
|
horizontalalignment oder ha |
[ |
label |
beliebiger String |
linespacing |
|
multialignment |
[ |
name oder fontname |
String z.B. [ |
picker |
[None|float|bool|callable] |
position |
(x, y) |
rotation |
[ Winkel in Grad | |
size oder fontsize |
[ Größe in Punkten | relative Größe, z.B. |
style oder fontstyle |
[ |
text |
String oder alles, was mit der '%s'-Konvertierung druckbar ist |
transform |
|
variant |
[ |
verticalalignment oder va |
[ |
visible |
bool |
weight oder fontweight |
[ |
x |
|
y |
|
zorder |
beliebige Zahl |
Sie können Text mit den Ausrichtungsargumenten horizontalalignment, verticalalignment und multialignment anordnen. horizontalalignment steuert, ob das x-Positionsargument für den Text die linke, mittlere oder rechte Seite der Textbegrenzungsbox angibt. verticalalignment steuert, ob das y-Positionsargument für den Text die untere, mittlere oder obere Seite der Textbegrenzungsbox angibt. multialignment, nur für zeilenweise getrennte Strings, steuert, ob die verschiedenen Zeilen links, mittig oder rechts ausgerichtet werden. Hier ist ein Beispiel, das den text()-Befehl verwendet, um die verschiedenen Ausrichtungsmöglichkeiten zu zeigen. Die Verwendung von transform=ax.transAxes im gesamten Code zeigt an, dass die Koordinaten relativ zur Begrenzungsbox der Achsen angegeben werden, wobei (0, 0) die untere linke Ecke der Achsen und (1, 1) die obere rechte Ecke ist.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + height
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
# axes coordinates: (0, 0) is bottom left and (1, 1) is upper right
p = patches.Rectangle(
(left, bottom), width, height,
fill=False, transform=ax.transAxes, clip_on=False
)
ax.add_patch(p)
ax.text(left, bottom, 'left top',
horizontalalignment='left',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, bottom, 'left bottom',
horizontalalignment='left',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right bottom',
horizontalalignment='right',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right top',
horizontalalignment='right',
verticalalignment='top',
transform=ax.transAxes)
ax.text(right, bottom, 'center top',
horizontalalignment='center',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'right center',
horizontalalignment='right',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'left center',
horizontalalignment='left',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle',
horizontalalignment='center',
verticalalignment='center',
fontsize=20, color='red',
transform=ax.transAxes)
ax.text(right, 0.5*(bottom+top), 'centered',
horizontalalignment='center',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, top, 'rotated\nwith newlines',
horizontalalignment='center',
verticalalignment='center',
rotation=45,
transform=ax.transAxes)
ax.set_axis_off()
plt.show()

Standard-Schriftart#
Die grundlegende Standard-Schriftart wird durch eine Reihe von rcParams gesteuert. Um die Schriftart für mathematische Ausdrücke einzustellen, verwenden Sie die rcParams, die mit mathtext beginnen (siehe mathtext).
rcParam |
Verwendung |
|---|---|
|
Liste von Schriftfamilien (auf dem Computer des Benutzers installiert) und/oder |
|
Der Standardstil, z.B. |
|
Standardvariante, z.B. |
|
Standard-Streckung, z.B. |
|
Standard-Schriftstärke. Entweder String oder Integer |
|
Standard-Schriftgröße in Punkten. Relative Schriftgrößen ( |
Matplotlib kann auf dem Computer des Benutzers installierte Schriftfamilien verwenden, d.h. Helvetica, Times usw. Schriftfamilien können auch mit generischen Familienaliassen angegeben werden, wie z.B. ({'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}).
Hinweis
Um auf die vollständige Liste der verfügbaren Schriftarten zuzugreifen
matplotlib.font_manager.get_font_names()
Die Zuordnung zwischen den generischen Familienaliassen und tatsächlichen Schriftfamilien (erwähnt in Standard-rcParams) wird durch die folgenden rcParams gesteuert
CSS-basierter generischer Familienalias |
rcParam mit Zuordnungen |
|---|---|
|
|
|
|
|
|
|
|
|
|
Wenn ein generischer Familienname in 'font.family' vorkommt, ersetzen wir diesen Eintrag durch alle Einträge in der entsprechenden rcParam-Zuordnung. Zum Beispiel
matplotlib.rcParams['font.family'] = ['Family1', 'serif', 'Family2']
matplotlib.rcParams['font.serif'] = ['SerifFamily1', 'SerifFamily2']
# This is effectively translated to:
matplotlib.rcParams['font.family'] = ['Family1', 'SerifFamily1', 'SerifFamily2', 'Family2']
Text mit nicht-lateinischen Glyphen#
Ab Version 2.0 enthält die Standard-Schriftart DejaVu Glyphen für viele westliche Alphabete, aber nicht für andere Schriftsysteme wie Chinesisch, Koreanisch oder Japanisch.
Um die Standard-Schriftart so einzustellen, dass sie die benötigten Codepunkte unterstützt, stellen Sie den Schriftartnamen voran ('font.family' (empfohlen) oder zu den gewünschten Aliaslisten).
# first method
matplotlib.rcParams['font.family'] = ['Source Han Sans TW', 'sans-serif']
# second method
matplotlib.rcParams['font.family'] = ['sans-serif']
matplotlib.rcParams['sans-serif'] = ['Source Han Sans TW', ...]
Die generischen Familienaliaslisten enthalten Schriftarten, die entweder zusammen mit Matplotlib ausgeliefert werden (daher ist die Wahrscheinlichkeit, sie zu finden, 100%) oder Schriftarten, die mit sehr hoher Wahrscheinlichkeit auf den meisten Systemen vorhanden sind.
Es ist eine gute Praxis, beim Festlegen benutzerdefinierter Schriftfamilien eine generische Familie als letzte Option an die Schriftfamilienliste anzuhängen.
Sie können dies auch in Ihrer .matplotlibrc-Datei festlegen
font.family: Source Han Sans TW, Arial, sans-serif
Um die auf Künstlerbasis verwendete Schriftart zu steuern, verwenden Sie die Schlüsselwörter *name*, *fontname* oder *fontproperties*, die in Text-Eigenschaften und Layout dokumentiert sind.
Unter Linux kann fc-list ein nützliches Werkzeug sein, um den Schriftartnamen zu ermitteln. Zum Beispiel
$ fc-list :lang=zh family
Noto to Sans Mono CJK TC,Noto Sans Mono CJK TC Bold
Noto Sans CJK TC,Noto Sans CJK TC Medium
Noto Sans CJK TC,Noto Sans CJK TC DemiLight
Noto Sans CJK KR,Noto Sans CJK KR Black
Noto Sans CJK TC,Noto Sans CJK TC Black
Noto Sans Mono CJK TC,Noto Sans Mono CJK TC Regular
Noto Sans CJK SC,Noto Sans CJK SC Light
listet alle Schriftarten auf, die Chinesisch unterstützen.