Heim > Backend-Entwicklung > Python-Tutorial > Lösen Sie das chinesische Anzeigeproblem der Python-Matplotlib-Zeichnung im Linux-System

Lösen Sie das chinesische Anzeigeproblem der Python-Matplotlib-Zeichnung im Linux-System

巴扎黑
Freigeben: 2017-06-23 16:25:15
Original
1884 Leute haben es durchsucht

Vor kurzem wollte ich einige Inhalte zur Python-Datenanalyse erlernen, also habe ich einen Crawler zum Crawlen einiger Daten erstellt und geplant, die Tools von Anaconda (Pandas, Numpy, Scipy, Matplotlib, Jupyter) zu verwenden, um ein vorläufiges Data Mining durchzuführen. und Analyse.

Wenn Sie Matplotlib zum Zeichnen eines Bildes verwenden, ist die Abszisse auf Chinesisch, aber die Abszisse des gezeichneten Balkendiagramms zeigt immer „Rahmen“, also habe ich die Informationen überprüft, um das Problem zu lösen. Ich bin der Meinung, dass dies ein relativ häufiges Problem sein sollte. Es gibt zwar viele chinesische Materialien im Internet, aber keines davon hat das Problem, auf das ich gestoßen bin, vollständig gelöst. Es hat fast drei Stunden Stückarbeit gekostet, bis es endlich fertig war. Ich möchte dies gerne weitergeben in der Hoffnung, dass es anderen Kindern helfen kann, die das gleiche Problem haben.

Laufumgebung:

  • python2.7

  • Linux Centos7

  • Problem mit Matplotlib und Pandas, die mit Conda installiert wurden

:

  • Matplotlib kann Chinesisch nicht anzeigen

Ursache des Problems:

  • Im Linux-Betriebssystem und in der Matplotlib-Schriftbibliothek sind keine chinesischen Schriftarten verfügbar.

  • Das Matplotlib-Paket unterstützt nur ASCII-Code Standardmäßig wird kein Unicode-Code unterstützt.

Zusammenfassung der Online-Informationen:

  • Ändern Sie die Ressourcenkonfigurationsdatei von Matplotlib, fügen Sie beispielsweise die hinzu Schriftart „Simhei“ (diese Schriftart ist nicht auf allen Linux-Systemen verfügbar! Änderung hat keine Auswirkung)

  • Installieren Sie chinesische Schriftarten für Linux und ändern Sie die Ressourcenkonfigurationsdatei von matplotlib. (Haha, es funktioniert nicht)

Lösung:

Tatsächlich handelt es sich auch um eine Kombination verschiedener Lösungen im Internet. Im Allgemeinen gibt es die folgenden Schritte:

1. Holen Sie sich den Pfad zur Matplotlibrc-Datei. Rufen Sie das Jupyter-Notizbuch auf:

1 import matplotlib2 matplotlib.matplotlib_fname()
Nach dem Login kopieren

Meine Datei befindet sich beispielsweise unter:

u'~/miniconda2/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc'
Nach dem Login kopieren

Durch nachfolgende Schritte wird die Schriftart dieser Datei geändert Parameter in .

2. Sehen Sie sich alle Schriftarten im System sowie die verfügbaren chinesischen Schriftarten an. Auch in Jupyter NB:

from matplotlib.font_manager import FontManagerimport subprocess
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)print mat_fonts
output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True)print '*' * 10, '系统可用的中文字体', '*' * 10print output
zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n'))
available = mat_fonts & zh_fontsprint '*' * 10, '可用的字体', '*' * 10for f in available:print f
Nach dem Login kopieren

Nach Abschluss des obigen Vorgangs werden Sie feststellen, dass die „Verfügbaren Schriftarten“ leer sind. Da es für matplotlib keine chinesischen Schriftarten gibt (deshalb werden alle chinesischen Schriftzeichen als „Boxen“ angezeigt)

3. Gehen Sie davon aus, dass das Betriebssystem keine chinesischen Schriftarten enthält. Laden Sie zu diesem Zeitpunkt eine chinesische TTF-Schriftart herunter und installieren Sie sie in Cenos. Sie müssen ein System installieren, das die Schriftfamilie erkennen kann, andernfalls ist sie ungültig. Ich habe es von dieser Website heruntergeladen:

Entpacken Sie die RAR-Datei. Erstellen Sie den Ordner „yourfontdir“, um diese Schriftart unter dem Pfad /usr/share/fonts zu speichern, und kopieren Sie die heruntergeladene ttf-Datei in „yourfontdir“ (Sie können die Datei zur einfacheren Bedienung in einen englischen Namen ändern)

4. Installieren Sie diese Schriftart für Cenos.

cd /usr/share/fonts/yourfontsdir#生成字体索引信息. 会显示字体的font-familysudo mkfontscale
sudo mkfontdir#更新字体缓存:fc-cache
Nach dem Login kopieren

5. Ändern Sie die Matplotlibrc-Datei.

Ändern Sie die in Schritt 1 erhaltene Matplotlibrc-Dateikonfiguration.

Entfernen Sie die Kommentare im Teil „font.family“ und fügen Sie eine chinesische Schriftart zur Unterstützungsschriftart „font.serif“ hinzu. Fügen Sie hier die Schriftfamilie der gerade heruntergeladenen chinesischen Schriftart hinzu. Sie können sie mit dem Befehl fc-list durchsuchen (am besten notieren Sie sie sich also vorher). Was ich hier hinzugefügt habe, ist die Schriftart „WenQuanYi Zen Hei Mono“.

Der folgende Kommentar muss entfernt werden, sonst wird auch das chinesische Minuszeichen als Quadrat angezeigt:

axes.unicode_minus  : False
Nach dem Login kopieren

6. Dieser Schritt ist der wichtigste! Fügen Sie chinesische Schriftarten zu matplotlib hinzu

Nachdem Sie Schritt 5 abgeschlossen und dann mit Schritt 2 fortgefahren haben, werden Sie feststellen, dass die „verfügbaren chinesischen Schriftarten“ bereits die gerade installierten Schriftarten enthalten, die Zeichnung jedoch immer noch kein Chinesisch anzeigen kann. Dies liegt daran, dass Sie die Schriftart in Centos installiert und Matplotlib angewiesen haben, diese Schriftart zu verwenden, Matplotlib die TTF-Datei dieser Schriftart jedoch nicht finden kann. . . . Also muss ich mir eins dafür besorgen.

Kopieren Sie die heruntergeladene TTF-Schriftart in den folgenden Pfad:

~/miniconda2/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf
Nach dem Login kopieren

und löschen Sie den entsprechenden Cache. Im folgenden Pfad:

~/.cache/matplotlib
Nach dem Login kopieren

Löschen Sie den Cache für Schriftarten

7. Versuchen Sie nun erneut, ein Bild zu zeichnen. Erledigt.

Referenz:


Das obige ist der detaillierte Inhalt vonLösen Sie das chinesische Anzeigeproblem der Python-Matplotlib-Zeichnung im Linux-System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage