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

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

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文件夾下並刪除緩存文件夾code

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

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行

看到此問題的朋友有能力能夠深究一下緣由,我我的若是解決了會更新此文。unicode

相關文章
相關標籤/搜索