[PYTHON] Beseitigen Sie verstümmelte japanische Zeichen in Matplotlib-Diagrammen mit Cloud Pak for Data Notebook

Wenn Sie ein Diagramm mit Matplotlib oder Seaborn zeichnen, können die japanischen Zeichen im Diagramm verstümmelt sein und wie unten gezeigt zu Tofu (□□□) werden. image.png

Dies ist ein Matplotlib- / Seaborn-spezifisches Problem, da die Umgebung keine japanischen Schriftarten hat oder nicht richtig konfiguriert ist. Die Lösung wird auch in Andere Artikel erläutert. Es handelt sich jedoch um eine Methode, um dies in Cloud Pak for Data (im Folgenden: CP4D) zu lösen.

Umgebung: CP4D v2.5, v3.0LA

In CP4D wird die Python-Umgebung für den Start mit Notebook im Voraus vorbereitet und jedes Mal, wenn die Laufzeit gestartet wird, im Ausgangszustand gestartet. Sobald Sie sie auf die Python-Umgebung eingestellt haben, ist sie in Zukunft nicht mehr in Ordnung. Als vorübergehende Maßnahme werden wir eine Lösung (Herunterladen von Schriftarten und Ändern von Einstellungen) in Notebook implementieren.

Gegenmaßnahmen für verstümmelte japanische Schriftzeichen in Matplotlib (CP4D-Version)

Führen Sie den folgenden Code am Anfang Ihres Notebooks aus. Die Schriftart ist ein Beispiel für die im vorherigen Artikel erwähnte IPA-Schriftart.

# download and install a Japanese font
!cd /tmp; curl -O https://ipafont.ipa.go.jp/IPAexfont/ipaexg00401.zip
!unzip -jo /tmp/ipaexg00401.zip -d ~/.fonts
# register the font
!fc-cache -fv; fc-list
# reset the matplotlib cache
!rm -rf ~/.cache/matplotlib

(Optional) Vergewissern Sie sich nach dem Ausführen der obigen Schritte, dass IPAex Gothic zu den Schriftarten hinzugefügt wurde, die matplotlib mit dem folgenden Code erkennen kann. Wenn wir uns das ansehen, können wir sehen, dass es ursprünglich nur DejaVu Sans in der Standard-Python-Umgebung von CP4D gab.

import matplotlib.font_manager;
[matplotlib.font_manager.FontProperties(fname=fname).get_name() for fname in matplotlib.font_manager.get_fontconfig_fonts()]
# -output-
#['DejaVu Sans',
# 'DejaVu Sans',
# 'DejaVu Sans',
# 'DejaVu Sans',
# 'DejaVu Sans',
# 'DejaVu Sans',
# 'DejaVu Sans',
# 'DejaVu Sans',
# 'DejaVu Sans',
# 'IPAexGothic']

Vor dem Zeichnen des Diagramms ist es in Ordnung, wenn Sie font.family in rcParams angeben.

from matplotlib import pyplot as plt
from matplotlib import rcParams
plt.rcParams['font.family'] = 'IPAexGothic'

Ausführungsbeispiel

# download and install a Japanese font
!cd /tmp; curl -O https://ipafont.ipa.go.jp/IPAexfont/ipaexg00401.zip
!unzip -jo /tmp/ipaexg00401.zip -d ~/.fonts
# register the font
!fc-cache -fv; fc-list
# reset the matplotlib cache
!rm -rf ~/.cache/matplotlib
# -output-
#Kürzung

Bereiten Sie Beispieldaten vor


import pandas as pd
df = pd.DataFrame({
    'AIUEO' : [1,2,3,4,5],
    'Kakikukeko' : [0.1,0.2,0.3,0.4,0.5],
    'Sashisuseso' : [10,20,30,40,50],
    'chinesische Charaktere' : [100.1,100.2,100.3,100.4,100.5]
})
df
# -output-
#Aiueo Kakikukeko Sashisuseso Kanji
# 0	1	0.1	10	100.1
# 1	2	0.2	20	100.2
# 2	3	0.3	30	100.3
# 3	4	0.4	40	100.4
# 4	5	0.5	50	100.5

Zeichnen Sie ein Diagramm


%matplotlib inline
from matplotlib import pyplot as plt
from matplotlib import rcParams
import seaborn as sns

# Specify font
plt.rcParams['font.family'] = 'IPAexGothic'

sns.pairplot(df)

Ergebnis: image.png


(Ergänzung) Mit CP4D v3.0.1 können Sie anscheinend eine Umgebung erstellen, in der bereits Schriftarten installiert sind, indem Sie ein benutzerdefiniertes Image der Python-Umgebung erstellen. Hoffentlich kann es als dauerhafte Maßnahme verwendet werden. Ich werde herausfordern, wenn ich die Gelegenheit habe.

Recommended Posts

Beseitigen Sie verstümmelte japanische Zeichen in Matplotlib-Diagrammen mit Cloud Pak for Data Notebook
Beseitigen Sie verstümmelte japanische Zeichen in JSON-Daten, die von der API erfasst wurden.
Das japanische Zeichen verstümmelte die Eliminierung von Matplotlib und NetworkX der Python-Bibliothek
Löse verstümmelte japanische Zeichen in matplotlib von Jupyter Notebook auf Docker
So entfernen Sie verstümmelte Zeichen im Matplotlib-Ausgabebild
Stellen Sie Funktionen mit Cloud Pak for Data bereit
Beispiel für den Betrieb eines Cloud Pak for Data-Objekts in Python (WML-Client, project_lib)
Korrigieren Sie verstümmelte Zeichen beim Umgang mit Japanisch in Anfragen
Speichern Sie Pandas-Daten mit Cloud Pak for Data (Watson Studio) im Excel-Format in Datenbeständen.
[Visual Studio Code] [Python] [Windows] Unterstützung für verstümmelte japanische Zeichen in der VS Code-Task- / Debug-Ausgabe
Seaborn, matplotlib Beseitigung verstümmelter Zeichen in der virtuellen Umgebung von Windows 10, Anaconda
Betten Sie das Matplotlib-Diagramm in Tkinter ein