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是由外国人写的,不支持中文显示
解决方法
有两种解决方法,一种是一劳永逸的(如果重新安装库的话或者新建虚拟环境的话还是要重新配置的),一种是每次都要执行的。 先讲简单的。
解决方法一
在代码中加入这两行代码
# 解决中文问题 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()
结果
已解决
解决方法二
检查字体
下载SimHei字体(即黑体)(或者其他的支持中文显示的字体也行) 大多数电脑都自带,没有的可以点击以下链接进行下载: 阿里云盘 链接: 提取码:F5DQ 百度网盘 链接: 提取码:q6s2
查看电脑字体
路径:C:WindowsFonts
查看位置
查看matplotlib配置文件位置
import matplotlib print(matplotlib.matplotlib_fname())
-
输出 C:Usersz2000miniconda3libsitepackagesmatplotlibmpl-datamatplotlibrc 每个人都路径都不相同,建议都查一遍。只需要复制到mpl-data即可。
复制文件
拷贝simhei.ttf文件到mpl-data目录下fonts tf
修改配置文件
修改配置文件matplotlibrc,在尾部追加如下内容 用记事本打开即可
font.family :sans-serif font.sans-serif :SimHei axes.unicode_minus :False
删除缓存
删除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()
结果
总结
问题解决
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
简单解释什么是Rest接口