[PYTHON] Paramètres japonais pour les axes matplotlib et Seaborn

Si vous voulez dessiner un graphe en Python pour le moment, vous utiliserez probablement matplotlib. Cependant, il y a trop d'API de configuration pour décider laquelle utiliser, et la palette de couleurs par défaut ne semble pas satisfaisante. Seaborn peut résoudre certains de ces problèmes. L'article suivant sera utile pour des exemples spécifiques.

Dans le cas d'un calcul numérique pur, les axes vertical et horizontal sont souvent des nombres et des dates, mais en fonction de l'ensemble de données, le japonais peut être traité. Les paramètres de police sont nécessaires pour utiliser le japonais pour les étiquettes et le texte. Plusieurs articles peuvent être utiles sur ce problème.

Alors, quel est votre environnement après tout? Il y a beaucoup de choses auxquelles je pense, j'ai donc rendu possible l'affichage d'un carnet de confirmation avec nbviewer. L'environnement est basé sur [jupyter / datascience-notebook] de Docker (https://hub.docker.com/r/jupyter/datascience-notebook/) et [IPA font](http: //ipafont.ipa. go.jp/) est placé. Le principe est le même pour les autres polices et plates-formes.

matplotlib.font_manager a les classes «FontManager» et «FontProperties». En les combinant, vous pouvez vérifier la liste des polices valides sur la plate-forme actuelle, et si la police japonaise que vous souhaitez cibler est valide, il semble que ce soit la plus courte pour l'activer globalement avec set () de Seaborn.

Liste des polices valides

Obtenez une liste de polices via * font_manager *, remplissez-la dans un bloc de données, puis effectuez une recherche conditionnelle.

Importation de module


import matplotlib.font_manager as fm
import pandas as pd

Liste des polices


fonts = fm.findSystemFonts()
# len(fonts) =>Il devrait y en avoir plus de 100

Emballage dans des trames de données


l = []
for f in fonts:
    font = fm.FontProperties(fname=f)
    l.append((f, font.get_name(), font.get_family()))
df = pd.DataFrame(l, columns=['path', 'name', 'family'])

Confirmez que la police IPA existe


df[df['path'].apply(lambda s: 'IPA' in s)]

Vous devriez obtenir une sortie comme celle-ci.

index path name family
82 /usr/share/fonts/truetype/IPAfont00303/ipagp.ttf IPAPGothic [sans-serif]
108 /usr/share/fonts/truetype/IPAfont00303/ipamp.ttf IPAPMincho [sans-serif]
138 /usr/share/fonts/truetype/IPAfont00303/ipam.ttf IPAMincho [sans-serif]
236 /usr/share/fonts/truetype/IPAfont00303/ipag.ttf IPAGothic [sans-serif]

Le fichier de police a été copié au préalable dans le conteneur Docker. Téléchargez et extrayez les fichiers ZIP manuellement.

Copie du fichier de police


$ docker exec notebook cp -r /dataset/IPAfont00303 /usr/share/fonts/truetype

Dessiner un graphique

Dessinez un graphique en utilisant respectivement les API matplotlib et Seaborn.

Importation de module


%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns

L'étiquette de l'axe vertical est définie avec * ylabel () *. Cette fonction prend la même chose que * text () * comme argument de mot-clé facultatif. Si vous cochez matplotlib.pyplot.text, vous pouvez voir qu'il peut être écrasé par le dictionnaire * fontdict *.

Définir la police japonaise pour l'étiquette de l'axe vertical


plt.plot([1,2,3,4])
plt.ylabel('Valeur numérique', fontdict={'family': 'IPAPGothic'})
plt.show()

graph1.png

Puis dessinez le graphique dans Seaborn. Utilisez seaborn.axes_style pour le style d'axe. Cette fonction peut également être utilisée avec l'instruction with. Autrement dit, vous pouvez définir le style de chaque graphique. Cependant, en réalité, il est plus probable que vous utilisiez le même style dans un seul notebook seaborn.set. Vous utiliserez .set). Il propagera ce que vous spécifiez dans l'attribut * font * aux paramètres de l'axe.

set()Appelez et dessinez avec Seaborn


data = pd.DataFrame([1, 2, 3, 4], columns=['Valeur numérique'])
sns.set(font=['IPAPGothic'])
sns.jointplot(x='Valeur numérique', y='Valeur numérique', data=data, xlim=(0, 5), ylim=(0, 5))

graph2.png

Je pense qu'il y a de bonnes et de mauvaises choses, mais le paramètre Seaborn écrase également le paramètre matplotlib. Si vous dessinez à partir de matplotlib dans le même cahier que précédemment, mais sans jeu de polices, l'axe japonais sera affiché normalement. Cela peut être utile lorsque vous souhaitez modifier d'un seul coup les styles de graphiques existants.

set()Dessiner avec matplotlib après avoir appelé


plt.plot([1,2,3,4])
plt.ylabel('Valeur numérique')
plt.show()

graph3.png

Recommended Posts

Paramètres japonais pour les axes matplotlib et Seaborn
Affichage japonais de matplotlib, seaborn
Utilisez xticks () pour pyplot et set_xticklabels () pour Axes.
À propos des polices japonaises de matplotlib (pour Mac)
Matplotlib Basics / Différence entre fig et axes
(Mac) Comment afficher en japonais avec Matplotlib et Seaborn sur MacOS Sierra
Dessinez plusieurs graphiques à l'aide de figures et d'axes matplotlib
[Python / Chrome] Paramètres de base et opérations de scraping
Japonais avec matplotlib
Paramètres initiaux pour l'utilisation de Python3.8 et pip sur CentOS8
(Pour ceux qui ne connaissent pas Matplotlib) Conseils pour dessiner des graphiques avec Seaborn
Paramètres Spacemacs (pour les débutants)
paramètres goland et Docker
matplotlib ceci et cela
Ajustez les axes avec matplotlib
Paramètres de proxy pour urllib.request
Environnement local japonais / japonais d'Ubuntu 19.10 et paramètres de fuseau horaire d'Eoan Ermine
Élimination des caractères japonais brouillés de matplotlib et NetworkX de la bibliothèque Python
4 techniques de création de diagrammes pour papiers et supports de présentation avec matplotlib