在matplotlib中设置中文字体

在matplotlib中设置中文字体

matplotlib库中默认使用的字体是不支持中文的,所以如果需要中文的标签或标题则我们手动去重新设置一个支持中文格式的字体。因为之前我在设置的时候犯了一个很蠢的问题,但是也可能是很多其它小白也会遇到的问题,所以,赶紧做好笔记,防止自己以后犯蠢,也供大家参考和指正!!!

问题

这里可以看到直接用title()输入中文的时候,图中不会出现中文,是因为matplot的默认字体不支持中文格式,所以下面我会为大家演示两种中文字体的设置方式,另外也会演示我的错误,供大家参考。
环境版本:windows系统,JupyterLab,python3.8,matplotlib 3.4.1
在这里插入图片描述

设置中文字体的方式

  • 通过FontProperties() 设置默认字体

先贴代码

#先导入相关库
import matplotlib.pyplot as plt
import matplotlib
from matplotlib import font_manager

#调用font_manager中的FontProperties()设置自己的字体
font_path =  "C:\\Windows\\Fonts\\simhei.ttf" 			#这里需要传入字体的路径
#传参
my_font = font_manager.FontProperties(fname = font_path,size =20 )   #自己的字体就定义完成了

#查看效果
plt.plot([1,2,3],[3,4,5])
plt.title("中文出现了",fontproperties = my_font)
plt.show()

在这里插入图片描述

windows系统的字体存放路径都在C:\Windows\Fonts\目录下
FontProperties()中也可以设置字体的大小,通过传入参数size即可
调用自己的字体时,通过fontproperties = my_font即可

  • 设置全局字体

还是先贴代码

#在matplotlib中提供一个方法可以查看我们可以设置的默认字体,先查看一下有哪些可以使用
from matplotlib.font_manager import FontManager
import subprocess

all_fonts = set(f.name for f in FontManager().ttflist)

print('all font list get from matplotlib.font_manager:')
for f in sorted(all_fonts):
    print('\t' + f)

结果如下:
有很多字体,图中只是部分,个人认为应该是会自动检测电脑中的字体

那么既然有了这么多选择下面应该就是如何设置的问题了

import matplotlib.pyplt as plt
import matplotlib

#先用字典封装号字体样式,还可以设置更多格式(类似粗细之类的)在这里我没有展示出来
font = {
    'family':'cmsy10',
    'size':18
}
matplotlib.rc("font",**font)

#效果演示
plt.plot([1,2,3],[3,4,5])
plt.title("Consolas")
plt.show()

运行结果:
在这里插入图片描述

在这里我挑了一个奇奇怪怪的字体,目的是让大家看见,这种设置格式是全局,不是针对于某一个标题或标签使用,所以大家用这种方式设置的时候尽量选取一个合适的字体
还有就是对matplotlib.rc()传参的时候注意要用字典的格式

import matplotlib.pyplot as plt
import matplotlib
from matplotlib import font_manager

#调用font_manager中的FontProperties()设置自己的字体
font_path =  "C:\\Windows\\Fonts\\simhei.ttf" 			
my_font = font_manager.FontProperties(fname = font_path,size =20 )   

font = {
    'family':'cmsy10',
    'size':18
}
matplotlib.rc("font",**font)

#效果演示
plt.plot([1,2,3],[3,4,5])
plt.title("Consolas",fontproperties = my_font)
plt.show()

在这里插入图片描述

当两种方法同时出现时,Fontproperties()方法会覆盖默认字体的设置

我的错误

我自己的错误就有一点点愚蠢了,在用第一个方法时,我可以获取一些英文的字体,但是如果时中文的字体(例如:仿宋)就会报错,好像是找不到文件之类的。后来用上面的方式获取了可用字体的时候发现了一些中文字体才醒悟,应该是文件名错了。
在这里插入图片描述
所以,在用第一种方式的时候,要记得使用属性里边的名字。

(以上就是全部内容,希望可以帮助大家,也欢迎大佬批评指正!!!)

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值