Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Texteigenschaften und Layout #
Steuern der Texteigenschaften und des Layouts 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.
Eigentum |
Werttyp |
---|---|
Alpha |
|
Hintergrundfarbe |
jede Matplotlib -Farbe |
bbox |
|
clip_box |
eine matplotlib.transform.Bbox-Instanz |
clip_on |
bool |
clip_path |
|
Farbe |
jede Matplotlib -Farbe |
Familie |
[ |
Schrifteigenschaften |
|
horizontale Ausrichtung oder ha |
[ |
Etikett |
irgendeine Zeichenfolge |
Zeilenabstand |
|
Mehrfachausrichtung |
[ |
Name oder Schriftname |
Zeichenkette zB [ |
Pflücker |
[Keine|float|bool|aufrufbar] |
Position |
(x, y) |
Drehung |
[ Winkel in Grad | |
Größe oder Schriftgröße |
[ Größe in Punkten | relative Größe, zB |
Stil oder Schriftstil |
[ |
Text |
Zeichenfolge oder irgendetwas Druckbares mit '%s'-Konvertierung |
verwandeln |
|
Variante |
[ |
vertikale Ausrichtung oder va |
[ |
sichtbar |
bool |
Gewicht oder Schriftstärke |
[ |
x |
|
j |
|
zorder |
irgendeine Nummer |
Sie können Text mit den Ausrichtungsargumenten
horizontalalignment
, verticalalignment
, und
anordnen multialignment
. horizontalalignment
steuert, ob das x-Positionsargument für den Text die linke, mittlere oder rechte Seite des Textbegrenzungsrahmens angibt. verticalalignment
steuert, ob das y-Positionsargument für den Text die untere, mittlere oder obere Seite des Textbegrenzungsrahmens anzeigt. multialignment
, nur für durch Zeilenumbrüche getrennte Zeichenfolgen, steuert, ob die verschiedenen Zeilen linksbündig, zentriert oder rechtsbündig ausgerichtet sind. 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 zum Begrenzungsrahmen der Achsen angegeben sind, wobei (0, 0) die untere linke der Achsen und (1, 1) die obere rechte 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()
Standardschriftart #
Die Basis-Standardschriftart wird durch eine Reihe von rcParams gesteuert. Um die Schriftart für mathematische Ausdrücke festzulegen, verwenden Sie die rcParams beginnend mit mathtext
(siehe mathtext ).
rcParam |
Verwendungszweck |
---|---|
|
Liste der Schriftfamilien (auf dem Computer des Benutzers installiert) und/oder . |
|
Der Standardstil , z. B. |
|
Standardvariante, z . |
|
Standarddehnung, z. B. |
|
Standardgewicht. Entweder String oder Integer |
|
Standardschriftgröße in Punkt. Relative Schriftgrößen ( |
Matplotlib kann Schriftfamilien verwenden, die auf dem Computer des Benutzers installiert sind, z. B. Helvetica, Times usw. Schriftfamilien können auch mit Aliasnamen für generische Familien wie ( ) angegeben werden.{'cursive', 'fantasy', 'monospace',
'sans', 'sans serif', 'sans-serif', 'serif'}
Notiz
So greifen Sie auf die vollständige Liste der verfügbaren Schriftarten zu:
matplotlib.font_manager.get_font_names()
Die Zuordnung zwischen den generischen Familienaliasen und tatsächlichen Schriftfamilien (erwähnt bei Standard rcParams ) wird durch die folgenden rcParams gesteuert:
CSS-basierter generischer Familienalias |
rcParam mit Zuordnungen |
---|---|
|
|
|
|
|
|
|
|
|
|
Wenn einer der generischen Familiennamen in erscheint 'font.family'
, 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 v2.0 enthält die Standardschriftart DejaVu Glyphen für viele westliche Alphabete, aber keine anderen Schriften wie Chinesisch, Koreanisch oder Japanisch.
Um die Standardschriftart so festzulegen, dass sie die von Ihnen benötigten Codepunkte unterstützt, stellen Sie den Schriftartnamen 'font.family'
(empfohlen) oder den gewünschten Aliaslisten voran.
# 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 Familien-Aliaslisten enthalten Schriftarten, die entweder zusammen mit Matplotlib geliefert werden (so dass sie mit 100%iger Wahrscheinlichkeit gefunden werden), oder Schriftarten, die mit sehr hoher Wahrscheinlichkeit in den meisten Systemen vorhanden sind.
Eine bewährte Vorgehensweise beim Festlegen benutzerdefinierter Schriftfamilien besteht darin, als letzten Ausweg eine generische Familie an die Liste der Schriftfamilien anzuhängen.
Sie können es auch in Ihrer .matplotlibrc
Datei festlegen:
font.family: Source Han Sans TW, Arial, sans-serif
Um die verwendete Schriftart pro Künstler zu steuern, verwenden Sie die oben dokumentierten Schlüsselwortargumente name , fontname oder fontproperties .
Unter Linux kann fc-list ein nützliches Werkzeug sein, um den Namen der Schriftart 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.