小編給大家分享一下linux中如何徹底解決matplotlib中文亂碼問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)專注于網(wǎng)站建設|網(wǎng)頁維護|優(yōu)化|托管以及網(wǎng)絡推廣,積累了大量的網(wǎng)站設計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設計服務,案例作品覆蓋崗亭等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身策劃品質(zhì)網(wǎng)站。
matplotlib是python繪圖最基礎的工具包,但是一直以來matplotlib對中文都不是非常友好,默認情況下繪圖時中文顯示是亂碼。
之前使用windows的時候只需要更改matplotlibrc配置文件即可直接解決,但是當要在linux生產(chǎn)環(huán)境中批處理的時候就遇到了很多問題,有些linux系統(tǒng)沒有中文字體,而且大多數(shù)提供的中文字體是ttc格式,而matplotlib只支持ttf格式,而不支持ttc格式字體。
linux和mac os中的問題是相同的,下面就說一下如何徹底解決這一問題:
Windows
windows中是最簡單,直接修改matplotlibrc配置文件中的font相關的參數(shù)設置即可
Linux
假設你沒有root權限,只是在個人用戶中安裝(有root權限會更方便)。
首先查看系統(tǒng)中是否已經(jīng)有支持的中文字體
可以看到支持的中文字體都是ttc格式,畫出來的圖是無法顯示中文
下面我們安裝新字體,從windows拷貝微軟雅黑ttf文件,放到當前用戶主目錄 .fonts目錄下(如果沒有此目錄自行創(chuàng)建),放好字體文件之后執(zhí)行 fc-cache更新字體緩存,然后查看系統(tǒng)字體就能找到新添加的字體了
把相應的字體文件拷貝到 matplotlib 的 mpl-data/fonts/ttf 目錄下
修改 matplotlib 的配置文件 matplotlibrc 中 font.serif 和 font.sans-serif 選項(這是有襯線字體和無襯線字體,關于有襯線字體和無襯線字體的區(qū)別,可自行搜索)
注意:字體名稱是 Microsoft YaHei, 關于字體名稱在fc-list :lang=zh輸出信息中可以看到,如果錯了的話是不會生效的。
然后畫圖中文顯示即不會顯示亂碼
Mac OS X
OS X系統(tǒng)添加操作和Linux的操作類似,只是字體放置位置為 /Users/用戶名/Library/Fonts/ 目錄下,然后執(zhí)行 fc-cache 更新字體緩存,同時把字體文件放到 matplotlib/mpl-data/fonts/ttf 目錄下,然后剩下的操作和Linux系統(tǒng)相同。
三個系統(tǒng)我都測試過,最終都成功了。關于是否需要拷貝文件到 mpl-data 路徑的文件中,這個可能不是必要的,因為我在mac os x上拷貝到了 mpl-data/fonts 目錄下,而不是 mpl-data/fonts/ttf 目錄下,但是仍然成功顯示中文了,所以可能只需要添加到系統(tǒng)字體中即可。如果不行的話,還是將字體拷貝到 mpl-data/fonts/ttf 目錄中。
關于是否需要更新 matplotlib 字體緩存的問題,這個不是最關鍵的問題,可以刪除主目錄下 .matplotlib 文件中的字體緩存文件,或者直接重啟ipython 也可以。
看完了這篇文章,相信你對“l(fā)inux中如何徹底解決matplotlib中文亂碼問題”有了一定的了解,如果想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!