ubuntu下matplotlib畫圖中文亂碼問題


  最近因為論文原因在學習機器學習,看的一本叫做《機器學習實戰》的書,看了看還是不錯的,因為其中既有原理又有實例。今天載使用matplotlib進行畫圖時,發現中文會顯示為小方塊,這個問題真是神煩,折騰了一下午,終於搞定了,下面記錄一下我解決的過程。

    1. 查看matplotlib支持的中文字體

    用python運行以下代碼:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
from matplotlib.font_manager import FontManager
import subprocess

fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)

output = subprocess.check_output(
    'fc-list :lang=zh -f "%{family}\n"', shell=True)
# print '*' * 10, '系統可用的中文字體', '*' * 10
# print output
zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n'))
available = mat_fonts & zh_fonts

print '*' * 10, '可用的字體', '*' * 10
for f in available:
    print f

     我運行之后,發現說是"import Error:no module named font_manage"錯誤,之后經過一頓的搜索與嘗試,發現如下方法可以解決這個問題:使用windows下的字體,講C:\windows\fonts文件夾下的所有以.ttf結尾的文件拷貝到/usr/share/fonts/truetype目錄下,並將所有的ttf文件的權限修改所有人可以讀。

    2. 配置matplotlibrc文件

    修改matplotlibrc文件(查詢該文件的方法:進入root跟目錄下,運行find -name matplotlibrc),修改為如下:

font.family         : serif
font.serif : {zh_family}, serif

    其中{zh_family}就是1中所得到的可用字體。

    參考資料

    【1】http://segmentfault.com/blog/defool/1190000000621721

    【2】http://www.zeuux.com/group/scipython/bbs/content/6270/


免責聲明!

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



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