系統: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,暈了一下午的我。