问题概述
Matplotlib 默认不支持中文字体,这是因为 matplotlib 只支持 ASCII 字符,但是国人使用 matplotlib 肯定需要中文标注。如下图所示,当不对 Matplotlib 进行设置,而直接使用中文时,绘制的图像会出现中文乱码。
解决方案
由上图可知,本身应该出现中文的地方以方框进行显示,下文给出了两种解决方案,第一种是临时解决方案,第二种是永久性的解决方案。
重写配置信息
可以临时覆盖配置信息解决中文乱码的问题,其代码示例如下:
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
完整代码如下:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
fig, ax = plt.subplots(1, 1)
ax.set_facecolor("lemonchiffon")
x = np.random.random(100)
y = np.random.random(100)
ax.scatter(x, y, marker='o')
ax.set_xlim(-0.02, 1.02)
ax.set_ylim(-0.02, 1.02)
ax.set_title("标题", fontsize=15)
ax.set_xlabel("横轴")
ax.set_ylabel("纵轴")
plt.show()
画图结果如下:
修改配置文件
通过直接修改配置文件的方法,可以一劳永逸的解决 Matplotlib 的中文乱码问题。注意此过程在 Windows 环境下进行。一般情况下 matplotlib 从配置文件 matplotlibrc 中读取配置信息,比方说字体、样式等,首先需要确定配置文件的路径,使用以下代码可以确定配置文件的路径:
import matplotlib as mpl
print(mpl.matplotlib_fname())
输出结果如下:
D:\ProgramData\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc
然后修改配置文件 matplotlibrc。打开配置文件后,找到以下信息:
#font.family: sans-serif
#font.style: normal
#font.variant: normal
#font.weight: normal
#font.stretch: normal
#font.size: 10.0
更改配置信息并保存,这样就永久性的更改了 matplotlib 的默认字体了。
往期回顾
- 【matplotlib】可视化解决方案——如何设置matplotlib风格集
- 【matplotlib】可视化解决方案——如何设置轴标签的透明度和大小
- 【matplotlib】可视化解决方案——如何向图表中添加数据表
- 【matplotlib】可视化解决方案——如何更改绘图区域背景颜色
- 【matplotlib】可视化解决方案——如何使用数学公式
- 【matplotlib】可视化解决方案——绘图刻度设置
- 【matplotlib】可视化解决方案——共享绘图区域问题
- 【matplotlib】可视化解决方案——子图设置大标题问题解决方案
- 【matplotlib】可视化解决方案——子图间距问题解决方案
- 【matplotlib】可视化解决方案——capstyle参数详解
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!