Linux/MacOS下matplotlib能正常显示的中文字体选择

2017-03-23 20:11:43来源:CSDN作者:u010129448人点击

下面的Python脚本可以检测到 *nix 系统内 matplotlib 支持正常显示的中文字体(用到了命令行工具 fc-list ):

#!/usr/bin/env python# -*- coding: utf-8 -*-# File Name: font_check.py# Created Time: Thu Mar 23 16:53:59 2017__author__ = 'minyu'__mail__ = 'minyu7374@gmail.com'from matplotlib.font_managerimport FontManagerimport subprocessmpl_fonts = set(f.namefor f in FontManager().ttflist)print ('all font list get from matplotlib.font_manager:')for f insorted(mpl_fonts):    print('/t' + f)# for python2# output = subprocess.check_output('fc-list :lang=zh -f "%{family}/n"', shell=True)# for python3output = subprocess.check_output('fc-list :lang=zh -f "%{family}/n"', shell=True, encoding="utf8")zh_fonts = set(f.split(',',1)[0]for f in output.split('/n'))print('/n' +'Chinese font list get from fc-list:')for f insorted(zh_fonts):    print('/t' + f)print('/n' +'the fonts we can use:')available = set(mpl_fonts) &set(zh_fonts)for f in available:    print('/t' + f)


在个人的 MacOS Sierra 系统下运行结果如下:


Fontconfig warning: ignoring UTF-8: not a valid region tagall font list get from matplotlib.font_manager:	.Keyboard	.LastResort	.SF Compact Display	.SF Compact Rounded	.SF Compact Text	.SF NS Display Condensed	.SF NS Text Condensed	Andale Mono	Apple Braille	Apple Chancery	Apple Symbols	AppleGothic	AppleMyungjo	Arial	Arial Black	Arial Narrow	Arial Rounded MT Bold	Arial Unicode MS	Ayuthaya	Big Caslon	Bitstream Vera Sans	Bitstream Vera Sans Mono	Bitstream Vera Serif	Bodoni 72 Smallcaps	Bodoni Ornaments	Bradley Hand	Brush Script MT	Chalkduster	Comic Sans MS	Consolas	Courier New	DIN Alternate	DIN Condensed	DejaVu Sans	DejaVu Sans Display	DejaVu Sans Mono	DejaVu Serif	DejaVu Serif Display	Diwan Thuluth	East Syriac Adiabene	East Syriac Ctesiphon	Estrangelo Antioch	Estrangelo Edessa	Estrangelo Midyat	Estrangelo Nisibin	Estrangelo Nisibin Outline	Estrangelo Quenneshrin	Estrangelo Talada	Estrangelo TurAbdin	Farisi	Georgia	Goha-Tibeb Zemen	Gurmukhi MT	Herculanum	Hoefler Text	Impact	InaiMathi	Khmer Sangam MN	Kokonor	Krungthep	Lao Sangam MN	Luminari	Luxi Mono	Luxi Sans	Luxi Serif	Microsoft Sans Serif	Microsoft YaHei Mono	Mishafi	Mishafi Gold	Plantagenet Cherokee	STIXGeneral	STIXIntegralsD	STIXIntegralsSm	STIXIntegralsUp	STIXIntegralsUpD	STIXIntegralsUpSm	STIXNonUnicode	STIXSizeFiveSym	STIXSizeFourSym	STIXSizeOneSym	STIXSizeThreeSym	STIXSizeTwoSym	STIXVariants	Sathu	Serto Batnan	Serto Jerusalem	Serto Jerusalem Outline	Serto Kharput	Serto Malankara	Serto Mardin	Serto Urhoy	Silom	Skia	Symbol	System Font	Tahoma	Times New Roman	Trattatello	Trebuchet MS	Verdana	Webdings	Wingdings	Wingdings 2	Wingdings 3	YaHei Consolas Hybrid	Zapf Dingbats	Zapfino	cmb10	cmex10	cmmi10	cmr10	cmss10	cmsy10	cmtt10Fontconfig warning: ignoring UTF-8: not a valid region tagChinese font list get from fc-list:		.Hiragino Sans GB Interface	.LastResort	.PingFang HK	.PingFang SC	.PingFang TC	Arial Unicode MS	Fixed	GB18030 Bitmap	Heiti SC	Heiti TC	Hiragino Sans GB	Microsoft YaHei Mono	PingFang HK	PingFang SC	PingFang TC	STSong	Songti SC	Songti TC	YaHei Consolas Hybridthe fonts we can use:	.LastResort	Microsoft YaHei Mono	YaHei Consolas Hybrid	Arial Unicode MS



YaHei Consolas Hybrid 是我自己安装的字体,其他三个都是系统默认的,

这里选择了 YaHei Consolas Hybrid。



mpl.rcParams['font.sans-serif'] = ['YaHei Consolas Hybrid'] #指定默认字体mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台