python中Matplotlib、seaborn中英文乱码终极解决方案

关于Matplotlib中文乱码的问题一直困扰着我这个朴朴素素的制图人员,我也是试来试去各种方法无果之后,发现了一个最佳的解决方案。首先我列举一些市面上并不一定有效的解决方案:

import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['font.sans-serif'] = ['SimHei']  
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False    
# 解决Matplotlib坐标轴负号'-'显示为方块的问题
sns.set(font='SimHei')                        
# Seaborn中设置字体-黑体,解决Seaborn中文乱码问题

像上面这个方案,有的时候我绘图很神奇的是这些方案并不管用,乱码方框还是乱码方框。

终极解决方案

其实编码类问题也很好解决,只要明确两点,1.中文乱码是因为使用了英文的字体,所以只需要让中文绘图时强制使用中文字体就ok了;2.英文乱码也一样,是使用了中文的编码系统。只要我们在绘图时指定中文使用中文字体,英文使用英文字体,那么如何实现呢?

对于windows系统,引用windows目录下的fonts文件夹下的黑体字体,就可以解决中文乱码问题:

from matplotlib.font_manager import FontProperties
# 设置我们需要用到的中文字体(字体文件地址)
my_font = FontProperties(fname=r"c:\windows\fonts\SimHei.ttf", size=20)

英文也一样,引用windows目录下的fonts文件夹下的Times new Roman字体、

from matplotlib.font_manager import FontProperties
# 设置我们需要用到的中文字体(字体文件地址)
my_font1=FontProperties(fname=r"c:\windows\fonts\times.ttf",size=20)

使用的时候呢,直接在需要字体的地方,指定使用font就行,也就是中文字体使用中文字体,英文字体使用英文字体

#也就是中文字体使用中文字体,英文字体使用英文字体
plt.title(u'灌木', fontproperties=my_font)
plt.xlabel('R²', fontproperties=my_font1)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值