当前位置: 首页 > news >正文

ubuntu中解决matplotlib无法显示中文问题

一、查看本机matplotlib中支持的字体

运行下列代码即可查看支持的字体

# 查询当前系统所有字体
from matplotlib.font_manager import FontManager# 获取字体名称集合
mpl_fonts = sorted(set(f.name for f in FontManager().ttflist))# 设置每行列数
cols = 5
font_rows = [mpl_fonts[i:i + cols] for i in range(0, len(mpl_fonts), cols)]print("all font list from matplotlib.font_manager:\n")
for row in font_rows:print("".join(f"{name:<25}" for name in row))  # 每列宽度 25

运行结果参考

all font list from matplotlib.font_manager:AR PL UKai CN            AR PL UMing CN           Abyssinica SIL           Andale Mono              Ani                      
AnjaliOldLipi            Arial                    Arial Black              C059                     Chandas                  
Chilanka                 Comic Sans MS            Courier New              D050000L                 DejaVu Math TeX Gyre     
DejaVu Sans              DejaVu Sans Display      DejaVu Sans Mono         DejaVu Serif             DejaVu Serif Display     
Dhurjati                 Droid Sans Fallback      Dyuthi                   FreeMono                 FreeSans                 
FreeSerif                Gargi                    Garuda                   Gayathri                 Georgia                  
Gidugu                   Gubbi                    Gurajada                 Impact                   Jamrul                   
KacstArt                 KacstBook                KacstDecorative          KacstDigital             KacstFarsi               
KacstLetter              KacstNaskh               KacstOffice              KacstOne                 KacstPen                 
KacstPoster              KacstQurn                KacstScreen              KacstTitle               KacstTitleL              
Kalapi                   Kalimati                 Karumbi                  Keraleeyam               Khmer OS                 
Khmer OS System          Kinnari                  LKLUG                    LakkiReddy               Laksaman                 
Liberation Mono          Liberation Sans          Liberation Sans Narrow   Liberation Serif         Likhan                   
Lohit Assamese           Lohit Bengali            Lohit Devanagari         Lohit Gujarati           Lohit Gurmukhi           
Lohit Kannada            Lohit Malayalam          Lohit Odia               Lohit Tamil              Lohit Tamil Classical    
Lohit Telugu             Loma                     Mallanna                 Mandali                  Manjari                  
Meera                    Mitra                    Mukti                    NATS                     NTR                      
Nakula                   Navilu                   Nimbus Mono PS           Nimbus Roman             Nimbus Sans              
Nimbus Sans Narrow       Norasi                   Noto Mono                Noto Sans CJK JP         Noto Sans Mono           
Noto Serif CJK JP        OpenSymbol               P052                     Padauk                   Padauk Book              
Pagul                    Peddana                  Phetsarath OT            Ponnala                  Pothana2000              
Potti Sreeramulu         Purisa                   Rachana                  RaghuMalayalamSans       Ramabhadra               
Ramaraja                 Rasa                     RaviPrakash              Rekha                    STIXGeneral              
STIXNonUnicode           STIXSizeFiveSym          STIXSizeFourSym          STIXSizeOneSym           STIXSizeThreeSym         
STIXSizeTwoSym           Saab                     Sahadeva                 Samanata                 Samyak Devanagari        
Samyak Gujarati          Samyak Malayalam         Samyak Tamil             Sarai                    Sawasdee                 
SimHei                   SimSun-ExtB              Sree Krushnadevaraya     Standard Symbols PS      Suranna                  
Suravaram                Suruma                   Syamala Ramana           TenaliRamakrishna        Tibetan Machine Uni      
Times New Roman          Timmana                  Tlwg Mono                Tlwg Typewriter          Tlwg Typist              
Tlwg Typo                Trebuchet MS             URW Bookman              URW Gothic               Ubuntu                   
Ubuntu Condensed         Ubuntu Mono              Umpush                   Uroob                    Vemana2000               
Verdana                  Waree                    Webdings                 WenQuanYi Micro Hei      Yrsa                     
Z003                     aakar                    cmb10                    cmex10                   cmmi10                   
cmr10                    cmss10                   cmsy10                   cmtt10                   dsrom10                  
esint10                  eufm10                   mry_KacstQurn            msam10                   msbm10                   
ori1Uni                  padmaa                   padmaa-Bold.1.1          rsfs10                   stmary10                 
wasy10

ps: SimHei 即是中文黑体,我这里面已经安装了,如果没有安装见步骤(二)

二、将SimHei字体拷贝到matplotlib字体路径下

simhei.tff文件可以在Windows中获取,路径如下

C:\Windows\Fonts

在这里插入图片描述

查看matplotlib配置文件路径

import matplotlib as mpl
print(mpl.matplotlib_fname())

输出如下

/home/ryan/.local/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc

将上面拷贝的simhei.tff文件放到下面文件夹中

/home/ryan/.local/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf

在这里插入图片描述
然后再执行一下上面查看支持字体的代码,看看字体是否添加成功。

三、重建字体缓存

删除matplotlib配置文件,将下面路径下的.json文件删除。

~/.cache/matplotlib

然后执行

import matplotlib#重建历史缓存  更新完字体执行一次就可以
matplotlib.font_manager._load_fontmanager(try_read_cache=False)

测试以下中文能否显示

import matplotlib.pyplot as plt
import matplotlib as mplplt.rcParams['font.sans-serif'] = ['SimHei'] #添加“SimHei”(宋体)到字库族列表中
mpl.rcParams['axes.unicode_minus'] = False #解决负号'-'显示为方块的问题# 第一个 Figure
fig1, ax1 = plt.subplots()
ax1.plot([1, 2, 3], [4, 5, 6])
ax1.set_title("第一张图")plt.show()  # 显示所有图

在这里插入图片描述

相关文章:

  • 使用非常便捷,可以批量操作的小软件
  • windows10系统:如何使用电脑控制手机上多个应用程序(app)?
  • Spring Boot 多数据源事务管理
  • 获取嵌入(Embeddings)的方法与实践
  • CSRF 攻击:深入解析“借刀杀人“的请求伪造与防御之道
  • penEuler操作系统结合豆包测试github仓库8086-Emulator项目
  • 数据结构、刷leetcode返航版--二分5/7
  • C++ 的未来趋势与挑战:探索新边界
  • 【hot100】bug指南记录1
  • 在 Ubuntu 中配置 Samba 实现「特定用户可写,其他用户只读」的共享目录
  • Spring AI(1)—— 基本使用
  • MVCC机制
  • base64与图片的转换和预览
  • Selenium Web自动化测试学习笔记(二)--八大元素定位
  • 追踪大型语言模型的思想(下)(来自针对Claude的分析)
  • Yii2.0 模型规则(rules)详解
  • ntdll!CsrServerApiRoutine函数--csrsrv!CsrCallServerFromServer什么时候被调用?
  • 2025.05.07-华为机考第二题200分
  • 动态规划之花园
  • 高并发内存池(一):项目简介+定长内存池的实现
  • 母亲节书单|关于生育自由的未来
  • 游戏论|暴君无道,吊民伐罪——《苏丹的游戏》中的政治
  • 咸宁市委常委、市纪委书记官书云调任湖北省司法厅副厅长
  • 安徽亳州涡阳县司法局党组书记刘兴连落马
  • 援藏博士张兴堂已任西藏农牧学院党委书记、副校长
  • 明星站台“胖都来”背后:百元起录视频,20万可请顶流