You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器Matplotlib生成含泰文柱状图字体缺失问题求助

解决Matplotlib在Ubuntu服务器上的Tahoma字体缺失及泰文渲染问题

我来帮你搞定这个Matplotlib字体的问题,你遇到的情况在无图形界面的Ubuntu服务器上太常见了,咱们一步步来排查修复:

1. 先确认Tahoma字体是否真的安装到位

你虽然执行了sudo apt install msttcorefonts -qq,但有时候这个包的安装可能因为网络或者配置问题没完全成功,咱们验证一下:

  • 先更新系统字体缓存:
    fc-cache -fv
    
  • 然后搜索系统里的Tahoma字体:
    fc-list | grep -i tahoma
    

如果没有输出,说明Tahoma根本没装成功。这时候可以尝试重新安装msttcorefonts,或者手动下载Tahoma的TTF字体文件(比如从Windows系统复制,或从可信字体源获取),放到Ubuntu的字体目录(比如/usr/share/fonts/truetype/tahoma/),之后再执行fc-cache -fv更新缓存。

2. 直接在代码里指定字体文件(最稳妥的方案)

如果系统字体查找总是出问题,咱们可以绕开它,直接在代码里指定Tahoma字体文件的路径,这样就不用依赖系统字体配置了:
修改你的代码如下:

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 先设置后端为Agg(服务器无图形界面必须)
mpl.use('Agg')

# 加载Tahoma字体文件,替换成你的字体文件实际路径
tahoma_font = FontProperties(fname='/path/to/your/Tahoma.ttf')

site = ('Python', 'C++', 'Java', 'Perl', 'Scala', 'Lisp', 'จาวาสคลิป')
usage = [10,8,6,4,2,1, 2]

y_pos = np.arange(len(site))
plt.bar(y_pos, usage, align='center')
# 给x轴标签指定字体
plt.xticks(y_pos, site, fontproperties=tahoma_font)
# 给y轴和标题也指定字体
plt.ylabel('Percent', fontproperties=tahoma_font)
plt.title('Test', fontproperties=tahoma_font)

plt.tight_layout()
plt.savefig('test.png')
plt.cla()

这样不管系统有没有装Tahoma,只要字体文件存在,就能正常渲染,包括泰文字符。

3. 改用Ubuntu自带的泰文支持字体

如果不想折腾Tahoma,也可以直接用Ubuntu支持泰文的开源字体,比如Loma、Garuda这些,它们对泰文的渲染兼容性更好:

  • 先安装泰文字体包:
    sudo apt install fonts-thai-tlwg -y
    
  • 然后修改代码里的字体配置:
    mpl.rc('font', family='Loma')  # 或者用'Garuda'
    

这样既不用依赖微软的Tahoma,也能解决泰文字形缺失的问题。

4. 彻底重置Matplotlib字体缓存

你已经删了~/.cache/matplotlib,但有时候可以再强制Matplotlib重建缓存,在代码开头加上:

from matplotlib.font_manager import _rebuild
_rebuild()  # 强制重建字体缓存,注意这是内部函数,版本不同可能有变化

然后重启Python进程运行代码,确保新安装的字体被Matplotlib识别到。

内容的提问来源于stack exchange,提问作者Kaow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:12:26