Lorsque vous dessinez un graphique avec matplotlib ou seaborn, les caractères japonais du graphique peuvent être déformés et devenir du tofu (□□□) comme indiqué ci-dessous.
Il s'agit d'un problème spécifique à matplotlib / seaborn dû au fait que l'environnement n'a pas de polices japonaises ou est correctement configuré. La solution est également expliquée dans Autres articles, mais c'est une méthode pour résoudre ce problème sur Cloud Pak for Data (ci-après CP4D).
Environnement: CP4D v2.5, v3.0LA
Dans CP4D, l'environnement Python pour démarrer avec Notebook est préparé à l'avance, et il démarre dans l'état initial à chaque fois que le runtime est démarré, donc une fois que vous l'avez défini sur l'environnement Python, ce ne sera pas OK à l'avenir. À titre provisoire, nous mettrons en œuvre une solution (télécharger les polices et modifier les paramètres) dans Notebook.
Exécutez le code suivant au début de votre bloc-notes. La police est un exemple utilisant la police IPA mentionnée dans l'article précédent.
# 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
(Facultatif) Après avoir exécuté ce qui précède, vérifiez qu'IPAex Gothic a été ajouté aux polices que matplotlib peut reconnaître avec le code suivant. En regardant cela, nous pouvons voir qu'il n'y avait à l'origine que DejaVu Sans dans l'environnement Python par défaut de CP4D.
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']
Avant de dessiner le graphique, il est OK si vous spécifiez font.family dans rcParams.
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-
#réduction
Préparer des exemples de données
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],
'Caractères chinois' : [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
Dessinez un graphique
%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)
résultat:
(Ajout) Depuis CP4D v3.0.1, il semble que vous puissiez créer un environnement dans lequel les polices sont déjà installées en créant une image personnalisée de l'environnement Python. Espérons qu'il puisse être utilisé comme mesure permanente. Je contesterai si j'en ai l'occasion.
Recommended Posts