本文实例讲述了Python实现matplotlib显示中文的方法。分享给大家供大家参考,具体如下:
【注意】
可能与本文主题无关,不过我还是想指出来:使用matplotlib库时,下面两种导入方式是等价的(我指的是等效,当然这个说法可以商榷:)
import matplotlib.pyplot as plt
import pylab as plt
【效果图】
【方式一】FontProperties
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties # 步骤一
# ...
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=14) # 步骤二
plt.xlabel("x轴",fontproperties=font) # 步骤三
plt.ylabel("y轴",fontproperties=font)
plt.title("标题",fontproperties=font)
plt.show()
总的来说,很丑陋。
【方式二】 fontproperties
import matplotlib.pyplot as plt
# ...
plt.xlabel("x轴")
plt.ylabel("y轴",fontproperties="SimSun") # 步骤一 (宋体)
plt.title("标题",fontproperties="SimHei") # (黑体)
plt.show()
灵活,另一个优点:不污染全局字体设置
【方式三】rcParams
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)
#...
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()
简洁的用法。缺点:污染全局字体设置。(所以需要第二步骤)
【方式四】rc
import matplotlib.pyplot as plt
font = {'family' : 'SimHei','weight' : 'bold','size' : '16'}
plt.rc('font',**font) # 步骤一(设置字体的更多属性)
plt.rc('axes',unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
#...
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()
灵活的用法。缺点:影响全局字体(所以需要第二步骤)
【总结】
方式二用时才设置,且不会污染全局字体设置,更灵活
方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。
【测试代码】
import numpy as np
import matplotlib.pyplot as plt
font = {'family' : 'DFKai-SB',**font) # pass in the font dict as kwargs
plt.rc('axes',unicode_minus=False)
x = np.linspace(0,10,1000)
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize=(8,4))
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$")
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.ylim(-1.2,1.2)
plt.legend()
plt.show()
运行结果:
【附录】
一些中文字体的英文名
宋体
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
希望本文所述对大家Python程序设计有所帮助。