Ubuntu中Python无法显示图片

在Ubuntu环境中,遇到Python的Matplotlib库无法显示图片的问题,错误提示为使用了非GUI后端Agg。通过更改后端为TKAgg并安装Tkinter模块,成功解决了这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu中Python无法显示图片
显示错误是UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

解决办法
你是在什么操作系统环境下?看你的错误应该是你的 Matplotlib 用的 backend (后端) 是 Agg。

警告提示得很清楚:

Matplotlib is currently using agg, which is a non-GUI backend,
so cannot show the figure.

意思是:“Matplotlib 现在用的是 agg,这是一个非图形界面的后端(backend),因此不能显示图形”。


我的 Ubuntu 18.04.2 LTS 的 Matplotlib 用的是 agg 这个后端。

用 matplotlib.get_backend() 方法可以查看目前使用的是什么后端:

print(matplotlib.get_backend())
显示的是agg
现在改用TKAgg后端
用 TkAgg 的后端就会需要安装 Tkinter 这个 Python 的软件:

sudo apt install python3-tk
然后再运行程序就可以了

有用请点个赞!!
本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.youkuaiyun.com/weixin_45092662。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

<think>好的,我现在需要帮助用户在Ubuntu系统中了解如何通过Python调用字体,并提供方法和示例。首先,我需要回顾用户提供的引用内容,看看有没有相关的信息可以利用。 用户提到了四个引用,其中引用[1]、[2]、[3]和[4]。引用[1]和[2]主要关于在matplotlib显示中文的问题,涉及到字体文件的下载和配置。引用[3]提到在Linux中安装中文字体包,这可能和系统字体配置有关。引用[4]是关于终端输出彩色字体,可能和字体使用关系不大,但用户的问题是关于Python调用字体,所以可能需要结合前面的引用。 首先,用户的问题是UbuntuPython调用字体的方法和示例。常见的场景可能包括在matplotlib中设置字体,或者使用其他如Pillow处理字体。根据引用[1]和[2],用户可能已经知道如何在matplotlib中配置字体,但需要更通用的方法。 接下来,我需要考虑Python中常用的字体处理。比如,matplotlib用于绘图,Pillow用于图像处理,reportlab用于生成PDF,或者pygame用于游戏开发中的字体渲染。每个调用字体的方式不同,需要分别说明。 根据引用[2],用户提到了修改matplotlibrc文件和字体存储路径。这可能是一个方法,即在matplotlib中指定字体文件路径。此外,引用[3]提到安装系统字体包,这可能涉及到将字体文件放在系统目录,如/usr/share/fonts/,然后更新字体缓存,这样Python就可以检测到这些字体。 所以,可能的步骤包括:安装字体到系统,或在代码中指定字体文件的路径。例如,在matplotlib中,可以设置font.family或者直接指定font文件的路径。在Pillow中,使用ImageFont.truetype()时需要指定字体文件路径。 用户可能需要示例代码,比如如何在matplotlib使用特定字体,如何在Pillow中加载字体绘制文本,或者如何在其他使用系统字体。同时,需要说明如何确保字体文件存在,并且路径正确。 另外,用户的问题可能涉及如何在Python中找到可用的字体列表。例如,matplotlib的font_manager模块可以列出可用字体,或者使用系统命令如fc-list来查看已安装的字体。 需要检查是否有错误或遗漏的步骤,比如权限问题,字体缓存更新,或者是否需要重启应用等。例如,安装字体后可能需要运行fc-cache -fv来更新缓存,否则Python可能找不到新安装的字体。 总结步骤: 1. 安装字体到系统:将字体文件复制到系统字体目录,更新缓存。 2. 在Python代码中调用字体,根据不同的使用相应的方法: - matplotlib:设置rcParams或指定字体名称。 - Pillow:使用ImageFont.truetype()加载字体文件。 - 其他如reportlab或pygame类似,需要指定字体路径或名称。 3. 示例代码展示不同的用法。 4. 注意事项,如字体路径是否正确,缓存是否更新,权限问题等。 现在需要将这些步骤结构化,用清晰的中文回答,并提供示例代码。同时,生成相关问题,如用户提到的“如何检查系统已安装的字体?”、“如何解决字体不显示的问题?”等。</think>### Ubuntu系统中Python调用字体的方法与示例 在Ubuntu系统中,Python调用字体通常涉及系统字体配置和的特定设置。以下是具体方法和示例: --- #### **一、安装系统字体** 1. **将字体文件复制到系统目录**(需要管理员权限): ```bash sudo cp /path/to/custom_font.ttf /usr/share/fonts/truetype/ ``` 2. **更新字体缓存**: ```bash sudo fc-cache -fv ``` --- #### **二、Python调用字体的方法** ##### 1. **Matplotlib 示例** 在图表中使用自定义字体: ```python import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # 方法1:直接指定字体文件路径 font = FontProperties(fname='/usr/share/fonts/truetype/custom_font.ttf', size=12) plt.plot([1, 2, 3], label='示例文本') plt.legend(prop=font) plt.show() # 方法2:修改全局配置(需提前安装字体到系统) plt.rcParams['font.family'] = 'Custom Font Name' # 使用 `fc-list` 查看字体名称 plt.xlabel('X轴', fontsize=12) plt.ylabel('Y轴', fontsize=12) ``` > **注意**:若字体未正确显示,检查字体名称是否与系统注册的一致[^2]。 ##### 2. **Pillow (PIL) 示例** 在图像中绘制文本: ```python from PIL import Image, ImageDraw, ImageFont # 加载字体文件 font = ImageFont.truetype('/usr/share/fonts/truetype/custom_font.ttf', 20) img = Image.new('RGB', (200, 100), color='white') draw = ImageDraw.Draw(img) draw.text((10, 40), 'Python字体示例', fill='black', font=font) img.save('output.png') ``` ##### 3. **ReportLab 示例** 生成PDF文件: ```python from reportlab.pdfgen import canvas from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase import pdfmetrics pdfmetrics.registerFont(TTFont('CustomFont', '/usr/share/fonts/truetype/custom_font.ttf')) c = canvas.Canvas("example.pdf") c.setFont('CustomFont', 12) c.drawString(100, 700, "PDF中的自定义字体") c.save() ``` --- #### **三、检查系统可用字体** - **终端命令**: ```bash fc-list | grep "字体名称" ``` - **Python代码**(通过Matplotlib): ```python from matplotlib.font_manager import fontManager fonts = [f.name for f in fontManager.ttflist] print("可用字体列表:", fonts) ``` --- #### **四、常见问题解决** - **字体未生效**:确认字体文件路径正确,且已更新缓存(`fc-cache -fv`)。 - **权限问题**:将用户字体文件放在 `~/.fonts/` 目录,无需管理员权限。 - **编码问题**:确保文本字符串为Unicode格式(Python 3默认支持)。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值