Skip to content

设置matplotlib支持中文

约 972 字大约 3 分钟

PythonMatplotlib

2025-01-07

MacOS中,在Python中使用matplotlib库绘制图表时,默认情况下可能无法正确显示中文字符。为了解决这个问题,你需要设置matplotlib库支持中文。 以MacOS系统,设置matplotlib库支持中文为例,可以按照以下步骤进行操作:

  1. 检查系统是否安装了中文字体。
  2. 查看matplotlib可用字体。
  3. 设置matplotlib字体。
  4. 测试matplotlib中文显示。

检查系统是否安装了中文字体

为了检查Mac系统是否已经安装了中文字体。在终端中运行以下命令,可以查看已安装的中文字体列表:

$ fc-list :lang=zh
/System/Library/Fonts/STHeiti Medium.ttc: 黑体\-简,Heiti SC,黑體\-簡,黒体\-簡,Heiti\-간체:style=中等,Medium,中黑,Halbfett,Normaali,Moyen,Medio,ミディアム,중간체,Médio,Средний,Normal,Media
/System/Library/Fonts/STHeiti Light.ttc: 黑体\-繁,Heiti TC,黑體\-繁,黒体\-繁,Heiti\-번체:style=细体,Light,細體,Mager,Fein,Ohut,Fin,Leggero,ライト,가는체,Licht,Tynn,Leve,Светлый,Fina
/System/Library/Fonts/Supplemental/Songti.ttc: 宋体\-简,Songti SC,宋體\-簡:style=细体,Light,細體
/System/Library/Fonts/Supplemental/Songti.ttc: 宋体\-繁,Songti TC,宋體\-繁:style=常规体,Regular,標準體
/System/Library/Fonts/Supplemental/Songti.ttc: 宋体\-简,Songti SC,宋體\-簡:style=常规体,Regular,標準體
/System/Library/Fonts/Supplemental/Songti.ttc: 宋体\-繁,Songti TC,宋體\-繁:style=细体,Light,細體
/System/Library/Fonts/Supplemental/Songti.ttc: 宋体\-简,Songti SC,宋體\-簡:style=黑体,Black,黑體
/Library/Fonts/Arial Unicode.ttf: Arial Unicode MS:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/System/Library/Fonts/Hiragino Sans GB.ttc: .Hiragino Sans GB Interface:style=W6
/System/Library/Fonts/Hiragino Sans GB.ttc: .Hiragino Sans GB Interface:style=W3
/System/Library/Fonts/Supplemental/Arial Unicode.ttf: Arial Unicode MS:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/System/Library/Fonts/STHeiti Medium.ttc: 黑体\-繁,Heiti TC,黑體\-繁,黒体\-繁,Heiti\-번체:style=中等,Medium,中黑,Halbfett,Normaali,Moyen,Medio,ミディアム,중간체,Médio,Средний,Normal,Media
/System/Library/Fonts/Supplemental/Songti.ttc: 宋体\-简,Songti SC,宋體\-簡:style=粗体,Bold,粗體
/System/Library/Fonts/STHeiti Light.ttc: 黑体\-简,Heiti SC,黑體\-簡,黒体\-簡,Heiti\-간체:style=细体,Light,細體,Mager,Fein,Ohut,Fin,Leggero,ライト,가는체,Licht,Tynn,Leve,Светлый,Fina
/System/Library/Fonts/Supplemental/Songti.ttc: 宋体\-繁,Songti TC,宋體\-繁:style=粗体,Bold,粗體
/System/Library/Fonts/Hiragino Sans GB.ttc: 冬青黑体简体中文,Hiragino Sans GB,冬青黑體簡體中文,Hiragino Sans GB W6,冬青黑體簡體中文 W6,冬青黑体简体中文 W6:style=W6,Bold
/System/Library/Fonts/Supplemental/Songti.ttc: STSong:style=常规体,Regular,標準體,Ordinær,Normal,Normaali,Regolare,レギュラー,일반체,Regulier,Обычный
/System/Library/Fonts/Supplemental/NISC18030.ttf: GB18030 Bitmap:style=常规体,Regular,標準體,Ordinær,Normal,Normaali,Regolare,レギュラー,일반체,Regulier,Обычный
/System/Library/Fonts/Hiragino Sans GB.ttc: 冬青黑体简体中文,Hiragino Sans GB,冬青黑體簡體中文,Hiragino Sans GB W3,冬青黑體簡體中文 W3,冬青黑体简体中文 W3:style=W3,Regular
/System/Library/Fonts/LastResort.otf: .LastResort:style=Regular

如果你没有安装中文字体,可以从字体厂商的官方网站下载适合的字体并安装。

使用fc-list :lang=zh查询系统所支持的字体时,如果提示zsh: command not found: fc-list,如下:

$ fc-list :lang=zh
zsh: command not found: fc-list

这是因为未安装fontconfig导致的,因此需要安装fontconfig。参考:fc-list查询系统字体

查看matplotlib可用字体

import matplotlib.font_manager as font_manager
  
# 打印所有可用字体  
for font_filename in font_manager.fontManager.ttflist:  
    print(font_filename)

注意 选择系统中已安装的支持中文的字体且在matplotlib可用字体。如:Hiragino Sans

Python中设置matplotlib字体:

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Hiragino Sans'  # 设置字体为Hiragino Sans

测试matplotlib显示中文

在绘制图形时,使用plt.title()plt.xlabel()等函数来设置标题和标签的文本。例如:

plt.title('标题')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')

最后,使用plt.show()显示图形。

通过以上步骤,你应该能够在MacOS中使用matplotlib库显示包含中文的图形。

注意 不同的中文字体可能在不同的操作系统和环境中表现不同,所以你可能需要尝试不同的字体以找到最适合你的需求和环境的字体。

参考

fc-list查询系统字体