Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)

news/2025/3/2 0:21:11/

Pycharm使用matplotlib出现的问题

问题1:Pycharm调试时出现:AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'. Did you mean: 'FigureCanvasAgg'?

排查原因:可能是由于matplotlib后端设置不正确或与运行环境不兼容引起的。为了解决这个问题,我们可以尝试以下方法:

解决办法1:配置解决

1.1、Python中加入如下代码
import matplotlib.pyplot as plt

》》导入了 matplotlib.pyplot 模块,并将其重命名为 pltpyplot 是 matplotlib 中一个常用的子模块,它提供了类似于 MATLAB 的绘图接口,方便用户快速创建各种图表。

import matplotlib
matplotlib.use('TkAgg')  # 设置为交互式后端

》》调用 matplotlib.use() 函数,指定使用 TkAgg 作为后端。TkAgg 是 matplotlib 的一个图形用户界面后端,用于在 Tkinter 环境中显示图形。有时候,在某些环境下默认的后端可能无法正常显示图形,通过指定 TkAgg 可以解决部分显示问题。

1.2、Setting配置勾除:Show plots in tool window

问题解决,弹出图表(然后出现问题2)

解决方法2:升级matplotlib

pip install --upgrade matplotlib

问题2:图表中标题不显示,并且报错:UserWarning: Glyph 25968 (\N{CJK UNIFIED IDEOGRAPH-6570}) missing from font(s) DejaVu Sans.

这通常意味着matplotlib正在尝试渲染一个中文字符(例如“10”),但是当前配置的字体不支持这个字符。在中文环境中,很多图表和标签需要包含中文字符,因此确保字体包含这些字符是必要的。

方法1:指定字体

你可以通过设置matplotlib的rcParams来指定一个支持中文的字体。例如,你可以使用SimHei(黑体),这是Windows系统中常见的中文字体。

import matplotlib.pyplot as plt
 
# 设置matplotlib的字体为黑体,支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 或者其他支持中文的字体,比如 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号
 
# 绘图示例
#plt.plot([1, 2, 3], [4, 5, 6])
#plt.title('示例图表')
#plt.xlabel('X轴')
#plt.ylabel('Y轴')
#plt.show()

问题解决:

方法2:使用第三方库如Pillow进行图像渲染后再显示[我用的方法1解决了。这个AI提供的这里备上]

如果你在绘图时遇到字体问题,可以先使用支持中文的库如Pillow(PIL)来生成图像,然后再显示或保存图像。

from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt
import io
 
# 使用Pillow生成图像并添加中文文本
img = Image.new('RGB', (200, 100), color = (255, 255, 255))
d = ImageDraw.Draw(img)
font = ImageFont.truetype('/path/to/NotoSansCJK-Regular.otf', size=15)  # 确保路径正确,并选择合适的字体大小
d.text((10,10), '示例文本', font=font, fill=(0,0,0))
img_io = io.BytesIO()
img.save(img_io, 'png')
img_io.seek(0)  # 重置指针位置到文件开头
plt.imshow(Image.open(img_io))  # 使用matplotlib显示图像
plt.axis('off')  # 不显示坐标轴等杂项信息
plt.show()

 问题1参考:https://blog.csdn.net/weixin_62375676/article/details/143494190


http://www.ppmy.cn/news/1575905.html

相关文章

图数据库Neo4j面试内容整理-图遍历和最短路径

图遍历 和 最短路径 是图数据库中两个非常重要的概念,尤其是在图数据结构中,它们是解决许多问题(如社交网络分析、推荐系统、网络分析等)的核心算法。Neo4j 提供了强大的图遍历和最短路径查询能力,帮助用户有效地从图中提取信息。 1. 图遍历(Graph Traversal)

Java进阶:Zookeeper相关笔记

概要总结: ●Zookeeper是一个开源的分布式协调服务,需要下载并部署在服务器上(使用cmd启动,windows与linux都可用)。 ●zookeeper一般用来实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能。 ●有多台服…

​PDF 工具箱 软件无需安装绿色版

​PDF 工具箱 嘿,朋友们!今天给大家介绍一款超棒的工具——PDF工具箱。这款神奇的小工具是由吾爱利用GPT精心打造的,简直就是PDF处理界的“小能手”,真正做到了用AI解放我们的双手,让处理PDF文件变得轻松又愉快。 这款…

从“记住我”到 Web 认证:Cookie、JWT 和 Session 的故事

文章目录 1. 初识 HTTP:一场没有记忆的对话2. Cookie:网站的“记忆” 🍪3. Session:服务端的“记忆” 🎯4. JWT:让用户自己带着“身份证” 🔑5. Cookie vs Session vs JWT 总结 📊6.…

开箱即用!一个功能丰富的 AI 语音工具箱!

当我们处理大量音频文件时,往往需要语音识别、转录甚至语音合成等多款工具协作完成工具。 这时候,要是有一款工具能够一站式解决从语音识别到语音合成的一切需求就好。 今天,我在 GitHub 上就发现了一款可本地部署的多功能 AI 语音工具箱&a…

MySQL 和 Elasticsearch 之间的数据同步

MySQL 和 Elasticsearch 之间的数据同步是常见的需求,通常用于将结构化数据从关系型数据库同步到 Elasticsearch 以实现高效的全文搜索、聚合分析和实时查询。以下是几种常用的同步方案及其实现方法: 1. 应用层双写(双写模式) 原…

Ecode前后端传值

说明 在泛微 E9 系统开发过程中,使用 Ecode 调用后端接口并进行传值是极为常见且关键的操作。在上一篇文章中,我们探讨了 Ecode 调用后端代码的相关内容,本文将深入剖析在 Ecode 中如何向后端传值,以及后端又该如何处理接收这些值…

FastAPI 学习与使用

一、基本要求: 1.python版本3.6支持异步编程与类型提示 type hints 2. http基础了解(get/post/put/delete)、状态码、请求协议等 3.推荐使用python虚拟环境进行开发环境隔离 python -m venv myenv source myenv/bin/activate # Linux/Mac myenv\Scripts\activat…