matplotlib在MAC系統下中文字體顯示問題


最近想把部分python數據分析的代碼從win系統遷移到MAC上,有部分圖片上涉及中文顯示,遷移到MAC上warning:

UserWarning: 
findfont: Font family [u'sans-serif'] not found. Falling back to Bitstream Vera Sans
(prop.get_family(), self.defaultFamily[fontext]))

 然后中文字體各種方塊,我本來的字體設置代碼是這樣的:

def plot_para():#設置畫圖參數及相關配置,如透明度,中文顯示
    mpl.rcParams['font.sans-serif']='SimHei'
    mpl.rcParams['font.family']='sans-serif'
    mpl.rcParams['axes.unicode_minus']=False  

 網上給出了各種解決方案,總結下來無外乎下面兩種:

1.安裝對應字體,比如我的是微軟雅黑

2.將simhei.ttf拷貝到matplotlib的ttf文件夾下並刪除緩存文件夾

很遺憾這兩種對我都不work,從stackoverflow查找到了下面比較笨重的解決方案,算是暫時解決了問題。

def plot_para():#設置畫圖參數及相關配置,如透明度,中文啥啥的
    mpl.rcParams['axes.unicode_minus']=False  
    #手動設置字體路徑
    return FontProperties(fname='/Users/wanghongbo8/Library/Fonts/msyh.ttf')  
#在設置繪圖的部分指定FontProperties,比如
plt.ylabel(u'T+4有效與T+1有效 GMV 比值',FontProperties=plot_para())

 至此mac繪圖中文顯示無誤,但是這個方法比較笨,在涉及中文的部分都要手動指定fontproperties,當然可以通過函數重載來解決,卻也有點高射炮打蚊子的意味,報錯的源碼位於matplotlib的:

matplotlib/font_manager.py:1236行

看到此問題的朋友有能力可以深究一下原因,我個人如果解決了會更新此文。

 


免責聲明!

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



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