Windows+Python 解決 matplotlib 畫圖不支持中文(及負號)的問題
昨天折騰了這破問題一晚上,參照知乎上的問題下面的回答:matplotlib圖例中文亂碼?
以及還有一些博客,還是一直解決不了。今天終於弄好了,來分享下怎麼走的,方便以後需要的人可以少走點彎路,也為自己以後做個備份。
我的開發環境是 Windows10 + Anaconda3 + Pycharm。不過解決思想應該 linux,Mac也都差不多。
看到 @MichaelXoX 的答案,我這麼偷懶的人,當然選擇的是一勞永逸的解決方案啦!
我會基本操作,所以太長不看型:
首先把自己電腦上的windows支持中文的系統字體copy到malplotlib的字體中,再在matplotlibrc配置文件中設置一下支持,然後清除掉matplotlib以前的緩存,重啟Python即可大功告成!
步驟如下:
Step1:找到matplotlibrc配置文件和fonts所在位置。
在python的控制台輸入:matplotlib.matplotlib_fname(),從而得到matplotlib的配置文件所在位置,按此目錄索引打開該文件夾,可以看到fonts文件夾和matplotlibrc配置文件,進入到fonts文件夾里的ttf文件夾,放著不動,等待下一步操作。
Step2:Copy中文支持字體到matplotlib的ttf文件夾。
找到windows上支持中文的字體文件夾:C:WindowsFonts,找一個支持中文的,比方說微軟雅黑,黑體,楷體等等(我試過,此處其實無所謂ttc文件和ttf文件),將這個字體copy到Step1中的ttf文件夾中,我選的是微軟雅黑。
Step3:找到剛剛那個字體的英文名稱。
直接點開後發現字體名稱是中文的「微軟雅黑」,不是英文沒關係,給你一個對應表格。(昨晚一直弄不對其實就是卡死在這一步。)發現英文名是「Microsoft YaHei」。
表格出處參考鏈接:CSS 中文字體的英文名稱 (simhei, simsun) 宋體 微軟雅黑
Step4:配置matplotlibrc文件。
進入Step1中的matplotlibrc配置文件,找到大概211行的#font.sans-serif ,去掉#號,並在後面加上剛剛copy過來的字體的英文名稱(注意不是文件的英文名稱,比方說幼圓字體的文件名稱是SIMYOU.ttf,但這並不是我們想要的,而是它的字體英文名稱YouYuan),修改後保存。
Step5: 清除之前的緩存。(其實我也沒搞清楚到底需要不需要這一步,不過最好還是做這一步)
再Python控制台輸入:matplotlib.get_cachedir(),得到緩存所在的文件夾。進入文件夾,刪空裡面的文件。
Step6:開心地重啟Python即可。
(2018年1月18號更新)
Step7:修改配置matplotlibrc文件解決負號不顯示問題。
評論里 @舊信 提到了負號無法顯示的問題,我今天用到了負號,發現顯示的是一個方格,怎麼解決呢?很簡單,繼續一勞永逸的辦法,甚至不用重啟Python(至少我這邊是這樣的),修改配置文件matplotlibrc,大概在330行,去掉前面的注釋#號,將True改為False,保存修改好的文件,你的Python就可以顯示負號了。
聲明:轉載需聯繫本人。
推薦閱讀:
※Flask模板引擎:Jinja2語法介紹
※windows下anaconda 安裝報錯, errno9,怎麼解決?
※【Python基礎】靜態方法和類方法
※Python數據挖掘實踐—決策樹
TAG:Python | Matplotlib | 绘图 |