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

相关推荐
夜松云5 天前
Python数据可视化与数据处理全解析:Matplotlib图形控制与Pandas高效数据分析实战
python·算法·信息可视化·pandas·matplotlib
蹦蹦跳跳真可爱5895 天前
Python----数据分析(足球运动员数据分析)
python·数据挖掘·数据分析·pandas·matplotlib
无闻墨客6 天前
数据可视化(matplotlib)-------图表样式美化
python·信息可视化·matplotlib
IT从业者张某某6 天前
Python数据可视化-第1章-数据可视化与matplotlib
python·信息可视化·matplotlib
杜子腾dd6 天前
5.Matplotlib:高级绘图
大数据·python·信息可视化·自动化·matplotlib·数据可视化
慕丹7 天前
知识周汇 | 用 matplotlib 轻松绘制折线图、散点图、柱状图、直方图
python·pandas·matplotlib
qq_214782618 天前
matplotlib——南丁格尔玫瑰
python·matplotlib
杜子腾dd8 天前
4.Matplotlib:基础绘图
大数据·python·excel·matplotlib
Mr数据杨10 天前
Jupyter Notebook中解决matplotlib绘图中文乱码的实用方案
ide·jupyter·matplotlib
赛卡12 天前
自动驾驶系统的车辆动力学建模:自行车模型与汽车模型的对比分析
python·算法·数学建模·自动驾驶·numpy·matplotlib