matplotlib显示中文

【注意】

可能与本文主题无关,不过我还是想指出来:使用matplotlib库时,下面两种导入方式是等价的(我指的是等效,当然这个说法可以商榷:)

import matplotlib.pyplot as plt

 

import pylab as plt

 

 

【效果图】

 

【方式一】FontProperties

复制代码

 1 import matplotlib.pyplot as plt
 2 from matplotlib.font_manager import FontProperties  # 步骤一
 3 
 4 # ...
 5 
 6 font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)  # 步骤二
 7 plt.xlabel("x轴", fontproperties=font) # 步骤三
 8 plt.ylabel("y轴", fontproperties=font)
 9 plt.title("标题", fontproperties=font)
10 plt.show()

复制代码

总的来说,很丑陋。

 

【方式二】 fontproperties

复制代码

1 import matplotlib.pyplot as plt
2 
3 # ...
4 
5 plt.xlabel("x轴") 
6 plt.ylabel("y轴", fontproperties="SimSun") # 步骤一    (宋体)
7 plt.title("标题", fontproperties="SimHei") #          (黑体)
8 plt.show()

复制代码

灵活,另一个优点:不污染全局字体设置

 

【方式三】rcParams

复制代码

 1 import matplotlib.pyplot as plt
 2 
 3 plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
 4 plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)
 5 #...
 6 
 7 plt.xlabel("x轴")
 8 plt.ylabel("y轴")
 9 plt.title("标题")
10 plt.show()

复制代码

简洁的用法。缺点:污染全局字体设置。(所以需要第二步骤)

 

 

【方式四】rc

复制代码

 1 import matplotlib.pyplot as plt
 2 
 3 font = {'family' : 'SimHei',
 4         'weight' : 'bold',
 5         'size'   : '16'}
 6 plt.rc('font', **font)               # 步骤一(设置字体的更多属性)
 7 plt.rc('axes', unicode_minus=False)  # 步骤二(解决坐标轴负数的负号显示问题)
 8 
 9 #...
10 
11 plt.xlabel("x轴")
12 plt.ylabel("y轴")
13 plt.title("标题")
14 plt.show()

复制代码

灵活的用法。缺点:影响全局字体(所以需要第二步骤)

 

【总结】

方式二用时才设置,且不会污染全局字体设置,更灵活

方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。

 

 【测试代码】

 View Code

 

 

【附录】

一些中文字体的英文名

宋体     SimSun
黑体     SimHei
微软雅黑     Microsoft YaHei
微软正黑体     Microsoft JhengHei
新宋体     NSimSun
新细明体     PMingLiU
细明体     MingLiU
标楷体     DFKai-SB
仿宋     FangSong
楷体     KaiTi
隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值