Matplotlib和seaborn绘图时中文显示问题的解决方案

Matplotlib和seaborn都是python中用于绘图的第三方库,seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加的容易,在大多数情况下使用seaborn就能做出很具有吸引力的图。

在绘图的过程当中有时需要为图表加上标题,这是可能会出现中文乱码或者方块的情况,下面为大家介绍几种亲测有效的方法;

一、第一种方法是使用matplot的reParams属性来设置,具体如下:

sns.set_context("poster")
plt.bar([1,2,3,4,5],[3,6,9,2,5])
plt.title("柱形图")

Matplotlib和seaborn绘图时中文显示问题的解决方案_第1张图片
修改后:

plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei')  # 解决Seaborn中文显示问题
sns.set_context("poster")
plt.bar([1,2,3,4,5],[3,6,9,2,5])
plt.title("柱形图")

Matplotlib和seaborn绘图时中文显示问题的解决方案_第2张图片
在我画图的过程当中,用上述方法可以解决大部分问题,但是有时候也会出现无法解决的情况
例如:

plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei')  # 解决Seaborn中文显示问题
sns.set_style("white")
plt.bar([1,2,3,4,5],[3,6,9,2,5])
sns.despine(left=True,bottom=True)#去除Seaborn图脊,默认去除上边和右边
plt.xticks([])
plt.yticks([])
plt.title("柱形图")

Matplotlib和seaborn绘图时中文显示问题的解决方案_第3张图片
这时可以使用下述方法试一下

二、 第二种方法是使用matplotlib里面的font_manager工具,主要步骤如下:

(1)导入font_manager:

import matplotlib.font_manager as fm

(2)找到中文字体在电脑中的位置,导入中文字体库

zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\msyh.ttc')  # 字体位置

具体操作:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei')  # 解决Seaborn中文显示问题
zhfont1 = fm.FontProperties(fname='C:\Windows\Fonts\msyh.ttc')  # 字体位置
sns.set_style("white")
plt.bar([1,2,3,4,5],[3,6,9,2,5])
sns.despine(left=True,bottom=True)#去除Seaborn图脊,默认去除上边和右边
plt.xticks([])
plt.yticks([])
plt.title("柱形图")
plt.title(u'柱形图', fontproperties=zhfont1)  #title包含中文

Matplotlib和seaborn绘图时中文显示问题的解决方案_第4张图片
用以上两种方法基本上就可以解决大多数问题了。
参考博文:
https://blog.csdn.net/u012654847/article/details/71436469

你可能感兴趣的:(数据可视化)