2024年7月8日星期一

Matplotlib 中文显示乱码的解决办法

 Matplotlib 中文显示不是特别友好,要在 Matplotlib 中显示中文,我们可以通过两个方法:

  • 设置 Matplotlib 的字体参数。
  • 下载使用支持中文的字体库。

在未设置字体,默认情况显示如下,中文部分不能正常显示。


Matplotlib 的字体参数

我们可以先获取系统的字体库列表:

from matplotlib import pyplot as plt

import matplotlib

a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])


for i in a:

    print(i)

输出结果类似如下:

...

Heiti TC

Helvetica

Helvetica Neue

Herculanum

Hiragino Maru Gothic Pro

Hiragino Mincho ProN

Hiragino Sans

Hiragino Sans GB

Hoefler Text

...

以上代码输出 font_manager 的 ttflist 中所有注册的名字,找一个看中文字体例如:STFangsong(仿宋)、Heiti TC(黑体),然后添加以下代码即可。

对于 Windows:

plt.rcParams['font.family'] = 'SimHei'  # 替换为你选择的字体

在 Windows 系统上,选择 SimHei(黑体)或其他中文字体,并将其设置为 Matplotlib 的默认字体。

对于 Linux:

plt.rcParams['font.family'] = 'WenQuanYi Micro Hei'  # 替换为你选择的字体

在Linux系统上,使用 fc-list 命令查看已安装的字体,选择一个中文字体,并将其设置为 Matplotlib 的默认字体。

对于 macOS:

plt.rcParams['font.family'] = 'Heiti TC'  # 替换为你选择的字体

通过设置 plt.rcParams['font.family'],你告诉 Matplotlib 使用选择的字体来渲染文本,从而在图表中正确显示中文。

这样,你就能够在 Matplotlib 图表中使用系统支持的中文字体了。

import matplotlib.pyplot as plt


plt.rcParams['font.family'] = 'Heiti TC'  # 替换为你选择的字体


# 创建数据

x = [1, 2, 3, 4, 5]

y = [2, 4, 6, 8, 10]


# 绘制折线图

plt.plot(x, y)


# 添加标题和标签

plt.title('折线图示例')

plt.xlabel('X轴')

plt.ylabel('Y轴')


# 显示图形

plt.show()

没有评论: