在Python绘图中,尤其是使用Matplotlib和Seaborn等库时,经常会出现中文显示异常的问题。本文对个人本地知识库《Python绘图:plt中文字体+公式显示》和《Python绘图:seaborn风格的中文字体设置方法》两则笔记的总结,供查阅。
1. 基础:Matplotlib中的中文显示问题
问题描述
Matplotlib绘图时默认情况下的中文字符可能无法正常显示,通常会显示为方框或乱码。
解决方案
直接设置Matplotlib的全局参数:
font.family
:设置字体族,通常使用serif
或sans-serif
font.serif
:指定具体的中文字体,如SimSun
(宋体)、KaiTi
(楷体)、Microsoft YaHei
(微软雅黑)mathtext.fontset
:设置数学公式的字体,推荐使用stix
示例代码如下:
import matplotlib.pyplot as plt
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
from matplotlib import rcParams
config = {
"font.family": 'serif', # 设置字体族
"font.size": 12, # 设置字体大小
"mathtext.fontset": 'stix', # 设置数学公式字体
"font.serif": ['SimSun'], # 设置中文字体为宋体
}
rcParams.update(config)
2. 拓展:Seaborn风格的中文显示问题
问题描述
Seaborn是基于Matplotlib的高级绘图库,因此中文显示问题与Matplotlib类似。若直接使用plt.style.use('seaborn')
,即使设置了plt的字体参数也会导致中文不显示,因为seaborn库需要单独指定字体。
解决方案
在Matplotlib绘图基础上,导入seaborn库单独设置其字体:
import seaborn as sns # 导入seaborn库
sns.set(font='SimHei') # 设置seaborn字体参数
同时,Matplotlib的全局参数仍然生效。