使用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 代码运行效果

相关推荐
Cloud_Shy6185 天前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 上篇)
python·数据分析·excel·pandas·matplotlib
键盘上的猫头鹰6 天前
Matplotlib可视化教程:从入门到精通
数据分析·matplotlib
深兰科技8 天前
深兰科技签约乌兹别克斯坦智慧城市项目,推动中国AI出海规模化
人工智能·beautifulsoup·numpy·智慧城市·fastapi·matplotlib·深兰科技
byzh_rc22 天前
[AI工具从入门到入土] 命令行
网络·人工智能·python·深度学习·matplotlib
小何code23 天前
人工智能【第7篇】数据可视化:Matplotlib与Seaborn实战(万字长文+完整代码)
人工智能·机器学习·信息可视化·matplotlib
qq_283720051 个月前
Python3 模块精讲:Matplotlib—— 数据可视化、绘图从零基础到实战精通
信息可视化·matplotlib
2401_827499991 个月前
数据分析学习06(黑马)-Matplotlib
学习·数据分析·matplotlib
哈伦20191 个月前
第六章 Matplotlib案例股票K线图绘制
python·matplotlib
淮北4941 个月前
ubuntu22.04将mp4转换成gif
python·scrapy·flask·beautifulsoup·pyqt·matplotlib
xiaotao1311 个月前
01-编程基础与数学基石:Matplotlib & Seaborn
人工智能·python·matplotlib