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.
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.
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'
# 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:
(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.