系统:ubutun16.04python
Python版本:python3.5测试
在使用matplotlib绘图时遇到显示中文为方框的问题,在网上找各类解决方法,折腾了一下午,终于解决了,在这里记念一下。字体
参考了https://www.zhihu.com/question/25404709,https://www.bbsmax.com/A/QW5YMxkO5m/等多个连接,ui
虽然不知道哪些步骤起到了做用,但终究解决了问题,只能下次遇到再探究。spa
第一步,下载中文黑体SimHei.ttfcode
第二步,找到matplotlib配置文件的位置blog
1 import matplotlib 2 print(matplotlib.matplotlib_fname())
/home/czz/anaconda3/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrcci
打开配置文件unicode
1 sudo gedit /home/czz/anaconda3/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
修改下面三项配置it
font.family : sans-serif
font.sans-serif : SimHei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif(在font.sans-serif后添加SimHei,用来正常显示中文标签)
axes.unicode_minus : False(把True改成False,用来正常显示负号)
第三步,将下载的字体复制到matplotlib字体库中
运行
1 locate -b 'mpl-data'
获得
1 /home/czz/anaconda3/lib/python3.5/site-packages/matplotlib/mpl-data 2 /home/czz/anaconda3/pkgs/matplotlib-1.5.3-np111py35_0/lib/python3.5/site-packages/matplotlib/mpl-data
将字体文件复制到这两个路径下。
能够在终端下运行命令fc-list :lang=zh-cn查看是否配置好了
第四步,在Home页中ctrl+H找到.cache/matplotlib目录将matplotlib删除。
从新运行测试代码(这个本身整一个简单的就好,我图省事就用了以前的代码)
1 import matplotlib.pyplot as plt 2 x_values = list(range(1, 1001)) 3 y_values = [x**2 for x in x_values] 4 #去黑色轮廓 5 plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, 6 edgecolors='none', s=40) 7 #设置图表标题并给坐标轴加上标签 8 plt.title(u"Squares of Number啊啊啊", fontsize=24) 9 plt.xlabel("Value", fontsize=14) 10 plt.ylabel("Square of Value", fontsize=14) 11 #设置刻度标记的大小 12 plt.tick_params(axis='both', which='major', labelsize=14) 13 #设置坐标轴的取值范围 14 plt.axis([0, 1100, 1, 1100000]) 15 16 plt.show()
到这里发现依然没用,吐血。。。
就又在python中运行了以下代码:
from matplotlib.font_manager import _rebuild _rebuild()
说是从新加载字体。而后重复执行第四步,再运行测试代码,我。。。我信你个鬼?没用!!!(固然这是对于我这台电脑来讲,别人的可能有用也说不定)
这是气急败坏的我使用出了终极大招。。。。。。重启电脑!!!
重启电脑后运行测试代码。。。superise!!!直接上图
可行了!!!真真是山重水近疑无路,柳暗花明又一村,我哭了。虽然不懂,但仍要记念一下。byebye,晕了一下午的我。