Matplotlib font_manager.py Fehler bei der Suche nach Schriftarten

10717
Tim

Auf einem Ubuntu 12.04-Computer wird immer dann ein Fehler angezeigt, wenn ich etwas plottiere:

/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1228: UserWarning: findfont: Konnte nicht übereinstimmen: family = Bitstream Vera Sans: style = normal: variant = normal: weight = medium: stretch = normal: size = x groß. Rückgabe von /usr/share/matplotlib/mpl-data/fonts/ttf/cmb10.ttf

was ich online nicht finden kann. Der folgende Code reproduziert den Fehler

import pylab as plt plt.plot(np.random.random((128))) plt.title("This should be monospaced") plt.savefig("/tmp/testfig.pdf") 

und auch der matplotlib-Selbsttest gibt diesen Fehler aus:

python -c "import matplotlib as m ; m.test(verbosity=1)" 

In habe ~/.matplotlib/matplotlibrcich:

font.family : monospace font.style : normal font.variant : normal font.weight : medium font.stretch : normal font.size : 10.0 font.serif : Palatino, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Charter, serif font.sans-serif : Helvetica, Bitstream Vera Sans, sans-serif font.monospace : Monaco, Ubuntu Mono Regular, Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Fixed, Terminal, monospace 

Einige Dinge, die das Problem für mich nicht lösen:

  1. Löschen von Dateien in ~/.matplotlib/(dh matplotlibrc, fontList.cache, tex.cache/)
  2. Ändern Sie die font.familyEigenschaft in~/.matplotlib/matplotlibrc
  3. Installieren Sie matplotlib nach einem erneut apt-get purge

Die Versionen, die ich verwende, sind:

  • Matplotlib 1.1.1 ~ rc1 + git20120423-0ubuntu1
  • Python 2.7.3
  • IPython 0.12.1
  • Ubuntu 12.04
4
Unter Ubuntu 16.04 mit matplotlib 2.2.3 ist kein solcher Ordner wie ~ / .matplotlib / `vorhanden. Wo sind die Cache-Dateien, die ich löschen sollte? MERose vor 5 Jahren 0

4 Antworten auf die Frage

4
Tim

After some fiddling around with font packages, the solution for me was installing the following packages:

libsys-cpu-perl pcf2bdf tex-gyre ttf-bitstream-vera tv-fonts xfonts-traditional 

I'm not sure why this helps, so perhaps somebody can add some background as to why this helps. Hopefully this helps someone else.

+1, dasselbe Problem auf Ubuntu 12.10 (mit mpl in einer virtualenv). gelöst mit deiner Antwort Vielen Dank. bmu vor 11 Jahren 0
Die Schrift konnte nicht gefunden werden. Bei der Installation von ttf-bitstream-vera haben Sie die Schriftart installiert, die nicht gefunden wurde. Timtro vor 10 Jahren 1
@ TimTro, aber warum funktioniert das Ändern von "font.family" nicht? Oder versucht es beim Start immer, alle Schriftfamilien aufzulösen? Tim vor 10 Jahren 0
@ Tim - Gute Frage. Die Antwort war mir vor sechs Wochen völlig klar, als ich antwortete, aber ich kann im Moment nicht verstehen, warum. Timtro vor 10 Jahren 0
2
Serge Stroobandt

matplotlibverwendet immer einen eigenen Satz von Zeichensätzen, unabhängig von anderen im System installierten Zeichensätzen. Auf Ubuntu 12.04 LTS befinden sich diese Schriftarten in /usr/share/matplotlib/mpl-data/fonts/.

Wenn Sie eine Schriftart in Ihrem Code aufrufen, die in diesem Verzeichnis nicht verfügbar ist, matplotlibwird zunächst versucht, auf Bitstream Vera Sans zurückzugreifen. Diese Schriftart ist jedoch nicht in .../mpl-data/fonts/Ubuntu 12.04 LTS-Installationen verfügbar . Zum Schluss matplotlibfällt noch die cmb10.ttfSchriftart, die verfügbar ist.

Durch die Installation von Systemfont-Paketen wie oben vorgeschlagen wird diese Warnung nicht behoben.

Man kann jedoch rcParams['mathtext.fontset'] = 'cm'den Code hinzufügen, um die zahlreichen Rückschläge und Warnungen zu vermeiden.

Alternativ können Sie eine Schriftart angeben, die in vorhanden ist /usr/share/matplotlib/mpl-data/fonts/.

Gibt es eine Möglichkeit, Matplotlib Schriftarten hinzuzufügen? Ich habe versucht, meine ttf-Schriftarten mit "/ usr / share / matplotlib / mpl-data / fonts / ttf /" zu verlinken, jedoch ohne Erfolg. PhilMacKay vor 9 Jahren 2
2
Sealander

Für mich unter OSX befand sich meine Python-Installation in meinem Home-Verzeichnis aufgrund von Administratorbeschränkungen, die zu Verwirrung bei der Schriftstelle führten. Ich konnte Helvetica mit folgenden Schritten arbeiten lassen: http://blog.olgabotvinnik.com/blog/2012/11/15/2012-11-15-how-to-set-helvetica-as-the-default-sans -serif-font-in /

  1. Laden Sie Fondu herunter und installieren Sie es, um Mac-Helvetica in TTF-Helvetica zu konvertieren. Mit homebrew, kann dies gemacht werden: brew install fondu.

  2. Finden Sie Helvetica auf Ihrem System. Für mich war es so/System/Library/Fonts/Helvetica.dfont

  3. Finden Sie heraus, wo matplotlib seine Daten speichert. Verwenden Sie python import matplotlib; matplotlib.matplotlib_fname(), um das Verzeichnis zu drucken.

  4. Setzen Sie die .ttf in: your_matplotlib_dir/matplotlib/mpl-data/fonts/ttfdannsudo fondu -show /System/Library/Fonts/Helvetica.dfont

  5. Bearbeiten Sie Ihre .matplotlibrc-Datei. Kopieren Sie die ursprüngliche .matplotlibrc-Datei in ein persönliches Verzeichnis, damit sie beim Aktualisieren von matplotlib nicht überschrieben wird.$ cp your_matplotlib_dir/matplotlib/mpl-data/matplotlibrc ~/.matplotlib/matplotlibrc

  6. Suchen Sie die Zeile: #font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serifdann kommentieren Sie die Markierung und verschieben Sie Helvetica nach vorne.font.sans-serif : Helvetica, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

Bitte zitieren Sie die wesentlichen Teile der Antwort aus den Referenzlinks, da die Antwort ungültig werden kann, wenn sich die verlinkten Seiten ändern. DavidPostill vor 8 Jahren 0
0
Aryeh Leib Taurog

Wahrscheinlich lädt es Ihre matplotlibrcKonfigurationsdatei nicht. Stellen Sie sicher, dass es an der richtigen Stelle ist. In der Dokumentation werden mehrere Orte aufgeführt, die durchsucht werden. Platzieren Sie es an einem der beschriebenen Orte:

  • das aktuelle Arbeitsverzeichnis des Python-Prozesses
  • beim ~/.config/matplotlib/matplotlibrc

Letzteres hat bei Debian 7 eigentlich nicht funktioniert, aber auch nicht ~/.matplotlib/matplotlibrc.