ubuntu中matplotlib解決顯示中文為方框


系統:ubutun16.04

Python版本:python3.5

在使用matplotlib繪圖時遇到顯示中文為方框的問題,在網上找各種解決方法,折騰了一下午,終於解決了,在這里紀念一下。

參考了https://www.zhihu.com/question/25404709,https://www.bbsmax.com/A/QW5YMxkO5m/等多個鏈接,

雖然不知道哪些步驟起到了作用,但終究解決了問題,只能下次遇到再探究。

第一步,下載中文黑體SimHei.ttf

第二步,找到matplotlib配置文件的位置

1 import matplotlib
2 print(matplotlib.matplotlib_fname())

/home/czz/anaconda3/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc

打開配置文件

1 sudo gedit /home/czz/anaconda3/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc

修改下面三項配置

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM