標籤:

matplotlib圖例中文亂碼?


  • 每次編寫代碼時進行參數設置

#coding:utf-8
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #用來正常顯示中文標籤
plt.rcParams["axes.unicode_minus"]=False #用來正常顯示負號
#有中文出現的情況,需要u"內容"

第二種方案通過配置參數,一勞永逸解決,鏈接:

python matplotlib 中文顯示參數設置


折騰了一天,終於搞定了.

系統Ubuntu16.04

Python版本:3.5.2

第一步:下載字體:msyh.ttf (微軟雅黑)

放在系統字體文件夾下:

/usr/share/fonts

同時我也複製了下放在matplotlib的字體文件夾下了(不知道這一步是不是必須)

/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf/

第二步:修改matplotlib配置文件:

sudo vim /usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc

刪除font.family和font.sans-serif兩行前的#,並在font.sans-serif後添加中文字體

Microsoft YaHei, ...(其餘不變)

第三步:刪除~/.cache/matplotlib下文件fontList.py3k.cache

重啟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)
#print(mat_fonts)
output = subprocess.check_output("fc-list :lang=zh -f "%{family}
"", shell=True)
#print( "*" * 10, "系統可用的中文字體", "*" * 10)
#print (output)
zh_fonts = set(f.split(",", 1)[0] for f in output.decode("utf-8").split("
"))
available = mat_fonts zh_fonts
print ("*" * 10, "可用的字體", "*" * 10)
for f in available:
print (f)

再補充一個win10的:

python3.6

  1. 找到matplotlib 配置文件:

import matplotlib
print(matplotlib.matplotlib_fname())
# 我自己的輸出結果如下:
# D:Program FilesPython36Libsite-packagesmatplotlibmpl-data

2. 編輯器打開此文件 matplotlibrc

刪除font.family和font.sans-serif兩行前的#,並在font.sans-serif後添加微軟雅黑字體Microsoft YaHei

3. 下載字體:msyh.ttf (微軟雅黑)

放在matplotlib 字體文件夾下:

# D:Program FilesPython36Libsite-packagesmatplotlibmpl-datafonts tf

4. 刪除.matplotlib/cache裡面的兩個緩存字體文件

C:Users你的用戶名.matplotlib

&" dw="254" dh="56" class="content_image lazy" w="254" data-actualsrc="//i1.wp.com/pic4.zhimg.com/50/v2-92f9f704ea4e9f440b57d3074da29db4_hd.jpg">

5. 重啟Python


推薦閱讀:

python matplotlib中axes與axis的區別?
Matplotlib 如何畫散點圖的圖例?
如何用簡單的演算法生成一個類似『光碟』的彩色圓形圖片?

TAG:Matplotlib |