让 matplotlib 显示中文的方法

以下是我在网上查阅的一些方法,最后尝试通过了。在这里做个备份,供大家参考。

方法1:在加入以下代码片段。

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STHeiti']

Mac 操作系统:

plt.rcParams['font.sans-serif'] = ['STHeiti']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

Windows 操作系统:

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

方法2:配置字体属性,不是一劳永逸,稍微有点麻烦,但是确实是有效的。

根据以下参考资料:
【超简单超清楚】mac环境matplotlib的中文配置
https://blog.csdn.net/gmr2453929471/article/details/78655834

from matplotlib.font_manager import FontProperties
font = FontProperties(fname='/Library/Fonts/Kaiti.ttc', size=20)

# 在要使用中文字体的地方,加上 fontproperties 属性

f, [ax1, ax2, ax3] = plt.subplots(1, 3, figsize=(20, 5))
sns.countplot(x='Sex', hue='Survived', data=data_train, ax=ax1)
sns.countplot(x='Pclass', hue='Survived', data=data_train, ax=ax2)
sns.countplot(x='Embarked', hue='Survived', data=data_train, ax=ax3)
ax1.set_title('Sex 特征分析', fontproperties=font)
ax2.set_title('Pclass 特征分析', fontproperties=font)
ax3.set_title('Embarked 特征分析', fontproperties=font)
f.suptitle('定类/定序数据类型特征分析', size=20, y=1.1, fontproperties=font)



f, [ax1, ax2] = plt.subplots(1, 2, figsize=(20, 5))
sns.countplot(x='SibSp', hue='Survived', data=data_train, ax=ax1)
sns.countplot(x='Parch', hue='Survived', data=data_train, ax=ax2)
ax1.set_title('SibSp 特征分析', fontproperties=font)
ax2.set_title('Parch 特征分析', fontproperties=font)

plt.show()

方法3:设置了一些字体属性以后,如果没有生效,执行下面这段代码重新构建一下

from matplotlib.font_manager import _rebuild

_rebuild()

在这里插入图片描述

  • 查看 matplotlib 字体文件目录
import matplotlib

print(matplotlib.matplotlib_fname())
  • 显示可用字体
import matplotlib
a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
    print(i)

其它参考资料:
Python matplotlib 在 mac os x 中如何显示中文,完美解决
https://www.cnblogs.com/ctsch/p/9041010.html

解决Mac系统下matplotlib中文显示方块问题
https://blog.csdn.net/sun_wangdong/article/details/79050170

Mac系统下Matplotlib显示中文设置
https://www.jianshu.com/p/61ce9736147c

猜你喜欢

转载自blog.csdn.net/lw_power/article/details/82994762
今日推荐