彻底解决 macOS 下Matplotlib 中文显示乱码问题
- 在使用 Python 的 Matplotlib 库进行数据可视化时,中文字符的显示常常会出现乱码问题,尤其在 macOS 系统上。
- 在网上找了一大堆方法,花了很久,发现不是要安装各种字体就是要改配置,而且字体真的不好找也不好安装。
解决方案概述
- 安装支持中文的字体:确保系统中安装了支持中文的字体。本文列出的一般都是系统自带的。
- 配置 Matplotlib 使用这些字体:在 Matplotlib 中设置字体,以确保中文字符能够正确显示。
import matplotlib.pyplot as plt
import matplotlib
# 设置字体为支持中文的字体
matplotlib.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题
matplotlib.rcParams['font.family'] = 'Kaiti SC' # 可以替换为其他字体
'''
以下是一些在 macOS 上支持中文的字体:
Kaiti SC(楷体 SC)
Hiragino Sans GB(华文黑体)
Songti SC(宋体 SC)
Heiti TC(黑体 TC)
PingFang HK(苹方 HK)
Arial Unicode MS(Arial Unicode MS
'''
以下代码展示了如何配置 Matplotlib 并绘制每种字体的样式示例:
import matplotlib.pyplot as plt
import numpy as np
# 字体列表
fonts = [
'Kaiti SC',
'Hiragino Sans GB',
'Songti SC',
'Heiti TC',
'PingFang HK',
'Arial Unicode MS'
]
# 创建一个图形
plt.figure(figsize=(10, 8))
# 绘制每种字体的样式
for i, font in enumerate(fonts):
plt.subplot(len(fonts), 1, i + 1)
plt.text(0.5, 0.5, f'示例文本 - {font}', fontsize=20, ha='center', va='center', fontfamily=font)
plt.axis('off') # 关闭坐标轴
plt.tight_layout()
plt.show()