Visualización de chino en Matplotlib
La visualización de chino en Matplotlib no es muy amigable. Para mostrar chino en Matplotlib, podemos hacerlo mediante dos métodos:
- Configurar los parámetros de fuente de Matplotlib.
- Descargar y usar una biblioteca de fuentes que admita chino.
Sin configurar fuentes, la visualización predeterminada es la siguiente, y la parte en chino no se muestra correctamente:

Parámetros de fuente de Matplotlib
Primero podemos obtener la lista de bibliotecas de fuentes del sistema:
Ejemplo
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
print(i)
El resultado de salida es similar al siguiente:
... Heiti TC Helvetica Helvetica Neue Herculanum Hiragino Maru Gothic Pro Hiragino Mincho ProN Hiragino Sans Hiragino Sans GB Hoefler Text ...
El código anterior genera todos los nombres registrados en ttflist de font_manager. Busca una fuente que admita chino, por ejemplo: STFangsong (FangSong), Heiti TC (HeiTi), y luego agrega el siguiente código.
Para Windows:
plt.rcParams['font.family'] = 'SimHei' # 替换为你选择的字体
En el sistema Windows, selecciona SimHei (HeiTi) u otra fuente china, y establécelo como la fuente predeterminada de Matplotlib.
Para Linux:
plt.rcParams['font.family'] = 'WenQuanYi Micro Hei' # 替换为你选择的字体
En el sistema Linux, usa el comando fc-list para ver las fuentes instaladas, elige una fuente china y establécelo como la fuente predeterminada de Matplotlib.
Para macOS:
plt.rcParams['font.family'] = 'Heiti TC' # 替换为你选择的字体
Mediante la configuraciónplt.rcParams['font.family'], le dices a Matplotlib que use la fuente seleccionada para renderizar el texto, mostrando así el chino correctamente en los gráficos.
De esta manera, podrás usar fuentes chinas compatibles con el sistema en los gráficos de Matplotlib.
Ejemplo
plt.rcParams['font.family'] = 'Heiti TC' # Reemplaza con la fuente que elijas
# Crear datos
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# Dibujar el gráfico de líneas
plt.plot(x, y)
# Agregar título y etiquetas
plt.title('Ejemplo de gráfico de líneas')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
# Mostrar el gráfico
plt.show()
Así el chino se puede mostrar correctamente, como se muestra a continuación:

Método común para sistemas de las principales plataformas:
# -------------------------- 设置中文字体 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 --------------------------
Ejemplo
import matplotlib.pyplot as plt
# -------------------------- Configurar fuente china inicio --------------------------
plt.rcParams['font.sans-serif'] = [
# Prioridad Windows
'SimHei', 'Microsoft YaHei',
# Prioridad macOS
'PingFang SC', 'Heiti TC',
# Prioridad Linux
'WenQuanYi Micro Hei', 'DejaVu Sans'
]
# Corregir el problema de que el signo negativo se muestre como un cuadrado
plt.rcParams['axes.unicode_minus'] = False
# -------------------------- Configurar fuente china fin --------------------------
# Generar datos simulados: agregar algo de ruido aleatorio sobre la curva seno
np.random.seed(42)
X = np.linspace(0, 10, 20)
y_true = np.sin(X) # La verdadera ley subyacente (que no conocemos)
y_noise = np.random.randn(20) * 0.3 # Ruido aleatorio
y = y_true + y_noise # Los datos que realmente observamos
plt.scatter(X, y, label='Datos observados (con ruido)', color='blue', alpha=0.6)
plt.plot(X, y_true, label='Ley real (y=sin(x))', color='green', linewidth=2)
plt.xlabel('X')
plt.ylabel('y')
plt.title('Datos y ley subyacente')
plt.legend()
plt.grid(True)
plt.show()
Nuestro objetivo es encontrar una curva (modelo) que mejor describa la ley reflejada por estos puntos azules dispersos (datos).
El grado en que el modelo describe los datos es elajuste。
Usar bibliotecas de fuentes
Matplotlib no admite chino de forma predeterminada. Podemos usar el siguiente método simple para resolverlo.
Aquí usamos Source Han Sans, una fuente de código abierto lanzada por Adobe y Google.
Sitio web oficial:https://source.typekit.com/source-han-serif/cn/
Dirección de GitHub:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese
Después de abrir el enlace, solo elige uno dentro:

También puedes descargarlo desde el disco en la nube:https://pan.baidu.com/s/10-w1JbXZSnx3Tm6uGpPGOw, código de extracción:yxqu。
Puedes descargar una fuente OTF, como SourceHanSansSC-Bold.otf, y colocar ese archivo en el directorio del código que se está ejecutando:
El archivo SourceHanSansSC-Bold.otf se coloca en el directorio del código que se está ejecutando:
Ejemplo
El resultado de ejecución se muestra en la siguiente figura:
