【注意】
可能与本文主题无关,不过我还是想指出来:使用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 plt2 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()
灵活的用法。缺点:影响全局字体(所以需要第二步骤)
【总结】
方式二用时才设置,且不会污染全局字体设置,更灵活
方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。
【测试代码】
1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 font = { 'family' : 'DFKai-SB', 5 'weight' : 'bold', 6 'size' : '16'} 7 plt.rc('font', **font) # pass in the font dict as kwargs 8 plt.rc('axes',unicode_minus=False) 9 10 11 x = np.linspace(0, 10, 1000)12 y = np.sin(x)13 z = np.cos(x**2)14 15 plt.figure(figsize=(8,4))16 plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)17 plt.plot(x,z,"b--",label="$cos(x^2)$")18 plt.xlabel("x轴")19 plt.ylabel("y轴")20 plt.title("标题")21 plt.ylim(-1.2,1.2)22 plt.legend()23 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