1问题描述

在绘制图形时,如果标题、标签、图例等包含中文,matplotlib 可能无法正确显示中文字符,通常会显示为小方框或者乱码。

如下图所示:

import pandas as pd
import matplotlib.pyplot as plt

# 读取Excel文件
data = pd.read_excel('C:/Users/Ling/Desktop/堆积图.xlsx');data  #变为反斜杠

# 设置图表标题和标签
plt.title('堆积条形图')
plt.xlabel('横轴变量')  # 横轴变量名称
plt.ylabel('百分比')      # 纵轴标签

在这里插入图片描述
从图形中可以发现,我想画的堆积条形图的横坐标标签、纵坐标标签、标题的文字都没有显示出来,而且变成了一堆方框。针对这个问题,我们的处理方法如下。

2 问题处理

其实报错的根本原因是 matplotlib 并没有找到你系统中已安装的字体。虽然你的电脑中有这个字体,但 matplotlib 不一定能够识别它。解决 matplotlib 中中文显示问题的关键是找出 matplotlib 内置支持的字体。接下来,我们可以通过运行以下代码来查看 matplotlib 支持的字体列表。

2.1 查看python支持的字体

# 查询当前系统所有字体
from matplotlib.font_manager import FontManager
import subprocess

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

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

可以发现是有很多中的,我们选择python有的一种中文字体即可。
在这里插入图片描述

2.2 新增两行代码,解决图形不能显示中文

import pandas as pd
import matplotlib.pyplot as plt

#新增加的两行############################
import matplotlib
matplotlib.rc("font",family='YouYuan')  #幼园字体
##新增加的两行############################

# 读取Excel文件
data = pd.read_excel('C:/Users/Ling/Desktop/堆积图.xlsx');data  #变为反斜杠

# 设置图表标题和标签
plt.title("堆积条形图")
plt.xlabel("横轴变量")  # 横轴变量名称
plt.ylabel("百分比")      # 纵轴标签

在这里插入图片描述
可以发现,标题、横坐标标题、纵坐标标题,就已经显示为中文了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐