Python matplotlib显示中文的四种方法详解

周予安
周予安
发布时间:2026-10-13 | 2人浏览过
原创

本文详细介绍Python中matplotlib库显示中文的四种常用方法。通过FontProperties、fontproperties参数、rcParams及rc函数,分别实现局部或全局字体配置。重点对比各方法在灵活性、代码简洁性及对全局设置影响方面的差异,并提供完整测试代码与常见中文字体名称对照表,帮助开发者选择最适合的方案。

本文通过具体实例,详细解析在Python中使用matplotlib库时如何实现中文字符的正确显示。内容涵盖多种实现路径及其优缺点分析,供读者参考借鉴。

【注意事项】

虽然与本文核心主题关联不大,但值得指出的是:在使用matplotlib库时,以下两种导入方式在功能上是等效的(尽管这一说法在严格意义上可能存在争议):

import matplotlib.pyplot as plt

import pylab as plt

【效果展示】

【方法一】使用FontProperties类

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties # 步骤一
# ...
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14) # 步骤二
plt.xlabel("x轴", fontproperties=font) # 步骤三
plt.ylabel("y轴", fontproperties=font)
plt.title("标题", fontproperties=font)
plt.show()

总体而言,该方法的视觉效果较为生硬。

【方法二】使用fontproperties参数

import matplotlib.pyplot as plt
# ...
plt.xlabel("x轴")
plt.ylabel("y轴", fontproperties="SimSun") # 步骤一  (宋体)
plt.title("标题", fontproperties="SimHei") #     (黑体)
plt.show()

该方法具有较高的灵活性,且其显著优势在于不会污染全局的字体设置。

【方法三】配置rcParams

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False  # 步骤二(解决坐标轴负数的负号显示问题)
#...
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()

这种用法相对简洁。然而,其缺点在于会污染全局的字体设置(因此通常需要配合后续步骤使用)。

【方法四】使用rc函数

import matplotlib.pyplot as plt
font = {'family' : 'SimHei',
    'weight' : 'bold',
    'size'  : '16'}
plt.rc('font', **font)        # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
#...
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()

该方法同样具备灵活性。但其缺点也是会影响全局字体设置(因此同样需要配合后续步骤使用)。

【总结分析】

方法二仅在需要时进行设置,且不会干扰全局字体配置,因此更加灵活。 方法三与方法四无需对字体路径进行硬编码,且支持一次设置、多次调用,使用更为便捷。

【测试代码示例】

import numpy as np
import matplotlib.pyplot as plt
font = {'family' : 'DFKai-SB',
    'weight' : 'bold',
    'size'  : '16'}
plt.rc('font', **font) # pass in the font dict as kwargs
plt.rc('axes',unicode_minus=False)
x = np.linspace(0, 10, 1000)
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize=(8,4))
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$")
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.ylim(-1.2,1.2)
plt.legend()
plt.show()

运行结果如下:

【附录资料】

常见中文字体对应的英文名称列表

宋体 SimSun
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
新宋体 NSimSun
新细明体 PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋 FangSong
楷体 KaiTi
隶书 LiSu
幼圆 YouYuan
华文细黑 STXihei
华文楷体 STKaiti
华文宋体 STSong
华文中宋 STZhongsong
华文仿宋 STFangsong
方正舒体 FZShuTi
方正姚体 FZYaoti
华文彩云 STCaiyun
华文琥珀 STHupo
华文隶书 STLiti
华文行楷 STXingkai
华文新魏 STXinwei

如需了解更多Python相关内容,可查阅本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》以及《Python入门与进阶经典教程》。

希望本文所述内容能对大家的Python程序设计工作有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表