使用Matplotlib显示中文的方法

1 问题提出

使用图1所示的代码进行matplotlib绘图时,因为其默认不支持中文,此时无法显示正确内容,如图2所示。

图1 matplotlib绘图绘图代码

图2 matplotlib无法显示中文

2 问题解决

2.1 设置全局字体

在图1所示的代码中,第13-15行分别设置了matplotlib绘制图的标题、横坐标标签和纵坐标标签,如果显示以上内容的字体是相同的,则可以通过设置全局字体的方式来解决显示汉字问题。

2.1.1 创建字体类FontProperties的实例

字体类FontProperties在matplotlib.font_manager模块中定义,该类用来存储和处理字体的属性,通过创建其实例来指定使用的字体字号等属性,代码如图3所示。

图3 创建字体类FontProperties实例的代码

其中,第4行代码从matplotlib.font_manager模块中导入FontProperties类;第5行代码指定字体文件的位置;第6行代码创建了FontProperties类的实例font,使用font_path指定的字体文件,字体大小是15。

相关链接1 Windows10系统中的字体文件位置是"C:\\Windows\\Fonts",可以在该位置上选择系统中已经安装好的字体文件。

注意1 图3中第5行代码使用自定义的字体文件1.ttf,因为指定的是相对路径,该字体文件应当与源代码文件在同一路径下。

2.1.2 设置matplotlib使用的字体参数

Matplotlib 使用rcParams来控制各种默认参数,rcParams['font.family']表示使用的字体。设置matplotlib使用的字体参数的代码如图4所示。

图4 设置matplotlib使用的字体参数的代码

第8行代码导入matplotlib模块,第9行代码将rcParams['font.family']设置为font.get_name()的返回值,font即为图3中创建的FontProperties实例,通过该实例调用的get_name()方法获取到的是图3中指定的字体名。

2.1.3 代码运行效果

通过以上设置之后,代码运行效果如图5所示。

图5 代码运行效果

2.2 设置局部字体

如果matplotlib绘制图的标题、x轴标签和y轴标签使用不一样的字体,此时可以通过设置局部字体来实现。

2.2.1 定义局部字体

设置局部字体的代码如图6所示。

图6 设置局部字体的代码

其中,第5-6行设置了用于显示标题的字体title_font;第7-8行设置了用于显示x轴标签的字体x_font;第9-10行设置了用于显示y轴标签的字体y_font。

2.2.2 设置字体

使用如图7所示的代码为不同的标签设置不同的字体。

图7 设置字体的代码

为set_title()、set_xlabel()和set_ylabel()方法添加fontproperties参数,并将该参数设置为图6中创建的不同字体。

2.2.3 代码运行效果

设置不同字体的代码运行效果如图8所示。

图8 代码运行效果

相关推荐
爱喝可乐的老王1 天前
数据分析实践--数据解析购房关键
信息可视化·数据分析·pandas·matplotlib
海棠AI实验室2 天前
第 十五 章 可视化入门:Matplotlib 做出像样的图
matplotlib
渡我白衣7 天前
计算机组成原理(11):加法器
python·机器学习·numpy·pandas·matplotlib·计组·数电
老歌老听老掉牙8 天前
使用 Matplotlib 自定义坐标轴字体及刻度样式详解
python·matplotlib
AC赳赳老秦9 天前
DeepSeek教育科技应用:智能生成个性化学习规划与知识点拆解教程
前端·网络·数据库·人工智能·学习·matplotlib·deepseek
AC赳赳老秦11 天前
行业数据 benchmark 对比:DeepSeek上传数据生成竞品差距分析报告
开发语言·网络·人工智能·python·matplotlib·涛思数据·deepseek
2401_8414956412 天前
【Python高级编程】图着色动态可视化 APP
python·算法·matplotlib·tkinter·回溯法·图着色算法·动态可视化工具
laocooon52385788612 天前
对传入的 x , y 两个数组做折线图, x 对应 x 轴, y 对应 y 轴。并保存到 Task1/image1/T2.png
python·numpy·pandas·matplotlib
渡我白衣13 天前
Python 与数据科学工具链入门:NumPy、Pandas、Matplotlib 快速上手
人工智能·python·机器学习·自然语言处理·numpy·pandas·matplotlib
shenzhenNBA16 天前
python模块matplotlib绘图-饼图
python·matplotlib·pyplot·python绘制图表