最近想把部分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