运行环境:
- python3.6
- ubuntu
- conda3 下的matplotlib
- jupyterLab
问题:
- matplotlib画图,无法显示中文
- 不加字体时,代码以及图显示如下:
-
import matplotlib.pyplot as plt import random from matplotlib.font_manager import FontProperties from pylab import * # 每隔两小时range(2, 26, 2) ,数据在x轴的数据, 可迭代 x = range(2, 26, 2) y = [15, 16, 14, 17, 20, 25, 26, 24, 22, 18, 15, 10] fig = plt.figure(figsize=(20, 8), dpi=80) # (20, 8)宽20,高8,dpi设置图片清晰度, 让图片更加清晰 plt.plot(x, y) # 设置x轴, y轴的刻度 _xticks_labels = [i/2 for i in range(2, 49)] plt.xticks(_xticks_labels[: :4]) # 设置步长 plt.yticks(range(min(y), max(y)+1)) plt.title(u'中文') plt.show()
原因(可能还有其他原因):
- linux操作系统以及matplotlib的字体库中,没有可用的中文字体
- matplotlib包默认只支持ASCII码,不支持unicode码
解决问题:
1. 找到linux下matplotlib安装包下的字体文件库路径:
'/home/XXX/anaconda3/envs/env_keras_gpu/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf'
可以看到可能没有你需要的字体:
2. 下载你需要的字体
下载路径:https://github.com/dolbydu/font(GitHub)
百度网盘:链接:https://pan.baidu.com/s/1CB5gGp-A_IKJyIPFlNsMKw 提取码:9sef
这是我自己下载的字体,还有需要下载别的字体的可以去GitHub上去下载
3. 将你下载的字体放在文件夹下
'/home/XXX/anaconda3/envs/env_keras_gpu/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf'
可以看到多出来这几个字体 微团雅黑-Microsoft Yahei.ttf,黑体-SimHei.ttf, 楷体-STKaiti.TTF
4. 字体下载好了,可以加入字体了
代码:
import matplotlib.pyplot as plt
import random
from matplotlib.font_manager import FontProperties
from pylab import *
fname = "/home/XXX/anaconda3/envs/env_keras_gpu/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STKaiti.TTF"
myfont = FontProperties(fname=fname)
# 每隔两小时range(2, 26, 2) ,数据在x轴的数据, 可迭代
x = range(2, 26, 2)
y = [15, 16, 14, 17, 20, 25, 26, 24, 22, 18, 15, 10]
fig = plt.figure(figsize=(20, 8), dpi=80) # (20, 8)宽20,高8,dpi设置图片清晰度, 让图片更加清晰
plt.plot(x, y)
# 设置x轴, y轴的刻度
_xticks_labels = [i/2 for i in range(2, 49)]
plt.xticks(_xticks_labels[: :4]) # 设置步长
plt.yticks(range(min(y), max(y)+1))
plt.title(u'中文',fontproperties=myfont)
plt.show()
此时的图如下:
好了,此时问题就解决了。。。。
还有其他的解决方法,大家也可以讨论讨论
大家可以关注我和我小伙伴的公众号~~~这里有我和我的小伙伴不定时的更新一些python技术资料哦!!大家也可以留言,讨论一下技术问题,希望大家多多支持,关注一下啦,谢谢大家啦~~