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.04Python版本: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 subprocessfm = 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
- 找到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裡面的兩個緩存字體文件
&" dw="254" dh="56" class="content_image lazy" w="254" data-actualsrc="//i1.wp.com/pic4.zhimg.com/50/v2-92f9f704ea4e9f440b57d3074da29db4_hd.jpg">
C:Users你的用戶名.matplotlib
5. 重啟Python
推薦閱讀:
※python matplotlib中axes與axis的區別?
※Matplotlib 如何畫散點圖的圖例?
※如何用簡單的演算法生成一個類似『光碟』的彩色圓形圖片?
TAG:Matplotlib |