Texteigenschaften und Layout #

Steuern der Texteigenschaften und des Layouts mit Matplotlib.

matplotlib.text.TextInstanzen haben eine Vielzahl von Eigenschaften, die über Schlüsselwortargumente für set_title, set_xlabel, text, usw. konfiguriert werden können.

Eigentum

Werttyp

Alpha

float

Hintergrundfarbe

jede Matplotlib -Farbe

bbox

Rectangleprop dict plus key 'pad', das ist ein Pad in Punkten

clip_box

eine matplotlib.transform.Bbox-Instanz

clip_on

bool

clip_path

eine PathInstanz und eine TransformInstanz, aPatch

Farbe

jede Matplotlib -Farbe

Familie

[ 'serif'| 'sans-serif'| 'cursive'| 'fantasy'| 'monospace']

Schrifteigenschaften

FontProperties

horizontale Ausrichtung oder ha

[ 'center'| 'right'| 'left']

Etikett

irgendeine Zeichenfolge

Zeilenabstand

float

Mehrfachausrichtung

[ 'left'| 'right'| 'center']

Name oder Schriftname

Zeichenkette zB [ 'Sans'| 'Courier'| 'Helvetica'...]

Pflücker

[Keine|float|bool|aufrufbar]

Position

(x, y)

Drehung

[ Winkel in Grad | 'vertical'| 'horizontal']

Größe oder Schriftgröße

[ Größe in Punkten | relative Größe, zB 'smaller', 'x-large']

Stil oder Schriftstil

[ 'normal'| 'italic'| 'oblique']

Text

Zeichenfolge oder irgendetwas Druckbares mit '%s'-Konvertierung

verwandeln

TransformUnterklasse

Variante

[ 'normal'| 'small-caps']

vertikale Ausrichtung oder va

[ 'center'| 'top'| 'bottom'| 'baseline']

sichtbar

bool

Gewicht oder Schriftstärke

[ 'normal'| 'bold'| 'heavy'| 'light'| 'ultrabold'| 'ultralight']

x

float

j

float

zorder

irgendeine Nummer

Sie können Text mit den Ausrichtungsargumenten horizontalalignment, verticalalignment, und anordnen multialignment. horizontalalignmentsteuert, ob das x-Positionsargument für den Text die linke, mittlere oder rechte Seite des Textbegrenzungsrahmens angibt. verticalalignmentsteuert, 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.transAxesim 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()
Textrequisiten

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

'font.family'

Liste der Schriftfamilien (auf dem Computer des Benutzers installiert) und/oder .{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}

'font.style'

Der Standardstil , z. B. 'normal', 'italic'.

'font.variant'

Standardvariante, z .'normal' B. 'small-caps' (ungetestet)

'font.stretch'

Standarddehnung, z. B. 'normal'( 'condensed' unvollständig)

'font.weight'

Standardgewicht. Entweder String oder Integer

'font.size'

Standardschriftgröße in Punkt. Relative Schriftgrößen ( 'large', 'x-small') werden anhand dieser Größe berechnet.

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

'serif'

'font.serif'

'monospace'

'font.monospace'

'fantasy'

'font.fantasy'

'cursive'

'font.cursive'

{'sans', 'sans serif', 'sans-serif'}

'font.sans-serif'

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 .matplotlibrcDatei 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.

Galerie generiert von Sphinx-Gallery