Affichage des caractères chinois dans Matplotlib
Matplotlib n'est pas particulièrement adapté à l'affichage du chinois. Pour afficher du chinois dans Matplotlib, nous pouvons utiliser deux méthodes :
- Définir les paramètres de police de Matplotlib.
- Télécharger et utiliser une bibliothèque de polices prenant en charge le chinois.
Sans définir de police, l'affichage par défaut est le suivant, et la partie en chinois ne peut pas s'afficher normalement :

Paramètres de police de Matplotlib
Nous pouvons d'abord obtenir la liste des bibliothèques de polices du système :
Exemple
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
print(i)
Le résultat de sortie est similaire à ce qui suit :
... Heiti TC Helvetica Helvetica Neue Herculanum Hiragino Maru Gothic Pro Hiragino Mincho ProN Hiragino Sans Hiragino Sans GB Hoefler Text ...
Le code ci-dessus affiche tous les noms enregistrés dans ttflist de font_manager. Trouvez une police chinoise telle que STFangsong (FangSong) ou Heiti TC (Heiti), puis ajoutez le code suivant.
Pour Windows :
plt.rcParams['font.family'] = 'SimHei' # 替换为你选择的字体
Sous Windows, sélectionnez SimHei (Heiti) ou une autre police chinoise, et définissez-la comme police par défaut de Matplotlib.
Pour Linux :
plt.rcParams['font.family'] = 'WenQuanYi Micro Hei' # 替换为你选择的字体
Sous Linux, utilisez la commande fc-list pour afficher les polices installées, choisissez une police chinoise, et définissez-la comme police par défaut de Matplotlib.
Pour macOS :
plt.rcParams['font.family'] = 'Heiti TC' # 替换为你选择的字体
En définissantplt.rcParams['font.family'], vous indiquez à Matplotlib d'utiliser la police sélectionnée pour le rendu du texte, ce qui permet d'afficher correctement les caractères chinois dans le graphique.
De cette façon, vous pouvez utiliser les polices chinoises prises en charge par le système dans les graphiques Matplotlib.
Exemple
plt.rcParams['font.family'] = 'Heiti TC' # Remplacez par la police que vous avez choisie
# Créer des données
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# Tracer un graphique en courbes
plt.plot(x, y)
# Ajouter un titre et des étiquettes
plt.title('Exemple de graphique en courbes')
plt.xlabel('Axe X')
plt.ylabel('Axe Y')
# Afficher le diagramme
plt.show()
Ensuite, le chinois peut s'afficher normalement, comme indiqué ci-dessous :

Méthode universelle pour différents systèmes de plateformes :
# -------------------------- 设置中文字体 start --------------------------
plt.rcParams['font.sans-serif'] = [
# Windows 优先
'SimHei', 'Microsoft YaHei',
# macOS 优先
'PingFang SC', 'Heiti TC',
# Linux 优先
'WenQuanYi Micro Hei', 'DejaVu Sans'
]
# 修复负号显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
# -------------------------- 设置中文字体 end --------------------------
Exemple
import matplotlib.pyplot as plt
# -------------------------- Début de configuration de la police chinoise --------------------------
plt.rcParams['font.sans-serif'] = [
# Windows en premier
'SimHei', 'Microsoft YaHei',
# macOS en premier
'PingFang SC', 'Heiti TC',
# Linux d'abord
'WenQuanYi Micro Hei', 'DejaVu Sans'
]
# Corriger le problème d'affichage du signe négatif sous forme de carré
plt.rcParams['axes.unicode_minus'] = False
# -------------------------- Fin de la configuration de la police chinoise --------------------------
# Générer des données simulées : ajouter un peu de bruit aléatoire sur la courbe sinusoïdale
np.random.seed(42)
X = np.linspace(0, 10, 20)
y_true = np.sin(X) # Le véritable motif sous-jacent (que nous ne connaissons pas)
y_noise = np.random.randn(20) * 0.3 # Bruit aléatoire
y = y_true + y_noise # Les données que nous observons réellement
plt.scatter(X, y, label='Données observées (avec bruit)', color='blue', alpha=0.6)
plt.plot(X, y_true, label='Motif réel (y=sin(x))', color='green', linewidth=2)
plt.xlabel('X')
plt.ylabel('y')
plt.title('Données et motif sous-jacent')
plt.legend()
plt.grid(True)
plt.show()
Notre objectif est de trouver une courbe (modèle) qui décrit le mieux le motif reflété par ces points de dispersion bleus (données).
Le degré auquel le modèle décrit les données est appeléajustement。
Utilisation d'une bibliothèque de polices
Matplotlib ne prend pas en charge le chinois par défaut. Nous pouvons utiliser la méthode simple suivante pour résoudre ce problème.
Ici, nous utilisons Source Han Sans, une police open source lancée par Adobe et Google.
Site officiel :https://source.typekit.com/source-han-serif/cn/
Adresse GitHub :https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese
Après avoir ouvert le lien, il suffit d'en choisir un :

Vous pouvez également télécharger depuis le cloud drive :https://pan.baidu.com/s/10-w1JbXZSnx3Tm6uGpPGOw, code d'extraction :yxqu。
Vous pouvez télécharger une police OTF, telle que SourceHanSansSC-Bold.otf, et placer le fichier dans le même répertoire que le fichier de code en cours d'exécution :
Placez le fichier SourceHanSansSC-Bold.otf dans le même répertoire que le fichier de code en cours d'exécution :
Exemple
La sortie après exécution est présentée ci-dessous :
