matplotlib正常显示中文教程

文章目录

    • 问题展示
        • 源码
        • 结果
    • 解决方法
      • 解决方法一
        • 源码
        • 结果
      • 解决方法二
        • 检查字体
          • 查看电脑字体
        • 查看位置
        • 复制文件
        • 修改配置文件
        • 删除缓存
        • 源码
        • 结果
    • 总结

问题展示

源码

import matplotlib.pyplot as plt
import random

# 1、准备数据 x y
x = range(60)
y = [random.uniform(15,18) for i in x]

# 2、创建画布
plt.figure(figsize=(20,8), dpi=100)

# 3、绘制图像
plt.plot(x, y)

# 修改x、y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
plt.yticks(range(0, 40, 5))

# 4、显示图像
plt.show()

结果

matplotlib正常显示中文教程_第1张图片原本要输出的中文变成了方框。
原因是matplotlib是由外国人写的,不支持中文显示

解决方法

有两种解决方法,一种是一劳永逸的(如果重新安装库的话或者新建虚拟环境的话还是要重新配置的),一种是每次都要执行的。
先讲简单的。

解决方法一

在代码中加入这两行代码

# 解决中文问题
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号

源码

import matplotlib.pyplot as plt
import random

# 解决中文问题
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号

# 1、准备数据 x y
x = range(60)
y = [random.uniform(15,18) for i in x]

# 2、创建画布
plt.figure(figsize=(20,8), dpi=100)

# 3、绘制图像
plt.plot(x, y)

# 修改x、y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
plt.yticks(range(0, 40, 5))

# 4、显示图像
plt.show()

结果

matplotlib正常显示中文教程_第2张图片已解决

解决方法二

检查字体

下载SimHei字体(即黑体)(或者其他的支持中文显示的字体也行)
大多数电脑都自带,没有的可以点击以下链接进行下载:
阿里云盘
链接:https://www.aliyundrive.com/s/Y1QjiYLZUuC
提取码:F5DQ
百度网盘
链接:https://pan.baidu.com/s/19xbl_FlLBFErTyJdYF_JDw
提取码:q6s2

查看电脑字体

路径:C:\Windows\Fonts
matplotlib正常显示中文教程_第3张图片

查看位置

查看matplotlib配置文件位置

import matplotlib
print(matplotlib.matplotlib_fname())
  • 输出
    C:\Users\z2000\miniconda3\lib\sitepackages\matplotlib\mpl-data\matplotlibrc
    每个人都路径都不相同,建议都查一遍。只需要复制到mpl-data即可。

复制文件

拷贝simhei.ttf文件到mpl-data目录下\fonts\ttf

修改配置文件

修改配置文件matplotlibrc,在尾部追加如下内容
用记事本打开即可

font.family			:sans-serif
font.sans-serif		:SimHei
axes.unicode_minus	:False

matplotlib正常显示中文教程_第4张图片

删除缓存

删除matplotlib中的缓存文件(Windows不需要)
Mac系统
删除~/.matplotlib中的缓存文件

cd ~/.matplotlib
rm -r *

Linux系统
删除~/.cache/matplotlib中的缓存文件

cd ~/.cache/matplotlib
rm -r *

源码

import matplotlib.pyplot as plt
import random

# 1、准备数据 x y
x = range(60)
y = [random.uniform(15,18) for i in x]

# 2、创建画布
plt.figure(figsize=(20,8), dpi=100)

# 3、绘制图像
plt.plot(x, y)

# 修改x、y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
plt.yticks(range(0, 40, 5))

# 4、显示图像
plt.show()

结果

matplotlib正常显示中文教程_第5张图片

总结

问题解决

你可能感兴趣的:(Python,python,机器学习,数据挖掘)