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.
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
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()
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))
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()