python matplotlib保存图片太慢?全网最新解决办法,速度快了一半

总结解决Python处理大批量图片时内存爆满的问题 处理大量图片可能会导致内存占用过高,特别是当所有图片都被同时加载到内存中时。 阅读详情
AI摘要

通过禁用matplotlib.pyplot中的fig.canvas.draw_idle()方法,显著提升了大型数据绘图保存的速度。

matplotlib可以说是python绘图中最最最经典的库,然而,当数据源较大时,其保存速度也会变得极慢,苦其久矣,其它绘图库,要么资料极少,要么不好用,那么,只能从其本身出发,想办法优化保存速度了。在尝试了不限于jit、清除画布等等方法均失败后,终于探索出一种有效的办法!保存时间从3.2s提升到了1.6s!!!

解决办法

  • 找到你虚拟环境中 matplotlib 里pyplot.py的位置
    例:我的是在 D:\CRR\venv\Lib\site-packages\matplotlib\pyplot.py
    一般都是在你项目目录的 venv\Lib\site-packages\matplotlib\pyplot.py
  • 打开此脚本,找到 savefig 里的 fig.canvas.draw_idle(),将其注释,我的是在978行,行号不一定相同
    在这里插入图片描述

效果

这里是注释了的,保存速度为1.6s
在这里插入图片描述

这里是没注释的,速度为3.2s
在这里插入图片描述

注意事项

如果你需要不断去plt.show(),不断刷新、渲染,不推荐此方法(我没这个需求,还没测试过此法是否试用这种情况)
如果你仅需保存图片到本地(哪怕需要背景透明(亲测)),直接使用此方法即可!!!
考虑到直接修改了库的源码,为避免其它场景下的冲突,建议在修改源码时,加个参数控制是否启用那行命令

分析过程

  1. 在pycharm里,使用这种方法分析运行情况
    在这里插入图片描述
    按照运行时间排序,发现在保存这一步花了3.6s的时间,就一行就这么慢!!!

    plt.savefig(savepath, pad_inches=0.0, transparent=True)

    在这里插入图片描述

  2. 双击点开后
    在这里插入图片描述

    发现在savefig后还有一步

    fig.canvas.draw_idle() # need this if ‘transparent=True’ to reset colors

    注释里我大概理解是指:当设置背景透明且需要刷新颜色时需要这一步 又看了看这句话消耗的时间,占了保存时的一半!!!官方还贴心的备注了可以根据具体情况重写此方法
    在这里插入图片描述

    而我们仅需保存,并没有重新渲染的需求

  3. 而且官方的注释里说了,这里就是针对GUI时间循环时刷新小部件的,我单纯的后端保存,完全用不到才对,在这里插入图片描述

  4. 尝试将其注释,看是否会影响到绘图结果
    经测试,并无影响!!!包括尺寸、大小 完全一样!!!
    在这里插入图片描述

  5. 其实还是推荐,重写一下savefig,加一个参数来判断是否关闭这个draw_idle,省的影响到后续其它的使用,毕竟是直接注释了源码

解决PyQt5中使用柱状图和饼状图刷新问题   一、问题描述 在做一款番茄钟应用,其中包含数据统计功能,如下图: 我遇到的问题是:当完成一个番茄钟后,需要对统计数据进行刷新,但是重新调用一下画图函数无效,下面贴出调用的这个画图函数: class MyFigure(FigureCanvas, QWidget):     def __init__(self,parent=None, minWidth=600,  minHeight=... 阅读详情

相关推荐

九天·毕昇平台免费GPU使用指南:从零搭建AI开发环境与实战技巧

GPU作为深度学习和人工智能模型训练的核心算力硬件,其并行计算能力极大地加速了矩阵运算和神经网络的前向传播与反向传播过程。在AI开发中,GPU通过CUDA架构释放了大规模数据处理的潜力,成为模型迭代和产品落地的关键技术支撑。对于个人开发者、学生和研究人员而言,获取稳定且经济的GPU算力是进行模型实验和项目开发的首要挑战。九天·毕昇平台提供了以“算力卡”为计量单位的免费GPU资源,用户可以根据任务需求灵活选择从T4到A100等不同型号的实例。通过理解实例的生命周期管理和资源消耗机制,开发者能够高效利用这一资源

weixin_30907935的博客 424

python plt.savefig速度非常慢

我再分析售后维修数据,需要将故障数量排名前50的零部件的详细统计图,在完成绘图后,用plt.savefig保存当前的图表。 plt.savefig(car_name[chexing]+’ TOP’+str(i+1)+’ 不良分析.jpg’,dpi=200,bbox_inches=‘tight’)。 然后我发现,一分钟只能保存出来2张图,我有十几个车型的数据需要分析,程序需要差不多3个小时才能运行完成。然后我一个一个点进行排查,发现执行plt.savefig这个语句,差不多花了43秒。 datetime.da

wenzhy87的博客 2890

Python地理空间数据库之geopandas使用详解

地理空间数据分析在许多领域中都有着广泛的应用,包括地理信息系统(GIS)、城市规划、环境科学、地质勘探等。Python GeoPandas是一个强大的库,旨在简化地理空间数据的处理和分析。本文将深入介绍GeoPandas库,包括其基本概念、功能特性、示例代码以及在实际应用中的应用场景。

Rocky006的博客 1万+

保存图片时速度越来越慢的问题

最近批量保存图片,大概有几千张,发现在运行初期速度特别快,但是很快就会有内存使用过大,CPU反而使用率不足,速度急速下降的现象。查了许多优化办法,发现最大的问题在于图片使用plt.savefig()这个函数的时候没有即使清理掉缓存,因此只需要使用plt.clf()进行清理就可以了。

weixin_50642818的博客 1374

[图解]SysML与EA实战:住宅安全系统接口块设计全解析

本文详细解析了使用SysML和EA工具进行住宅安全系统接口块设计的全流程。从系统上下文图入门到接口块实战技巧,涵盖块定义图与内部块图的视角转换,以及多图协同建模方法论。特别分享EA工具的高效操作指南和常见问题避坑建议,帮助工程师掌握精确信号定义、端口方向设置等关键技能,提升安防系统设计效率。

weixin_29234509的博客 333

南京邮电大学电工电子基础B实验六(组合逻辑电路)

南京邮电大学电工电子基础B实验五(组合逻辑电路);电工电子;南京邮电大学;计算机学院;实验报告;电路图;

亦是远方的小地方 1万+

python保存图片不完整_python使用matplotlib的savefig保存时图片保存不完整的问题

python使用matplotlib的savefig保存时图片保存不完整的问题使用如下形式的代码进行图片保存时,保存的图片出现不完整的情况,如图1所示。plt.colorbar()plt.savefig(title)plt.show()一开始我以为是图片大小比例不对,因而通过以下代码进行修改:plt.figure(figsize=(10,8))但是无论怎么修改,始终会出现这种情况,要么是下面显示不...

weixin_36030121的博客 3997

智能车竞赛环岛处理全解析:从图像识别到状态机控制

在嵌入式系统与自动控制领域,状态机是管理复杂系统行为、实现清晰逻辑流的核心设计模式。其原理在于定义一组有限的状态,以及触发状态迁移的事件和条件,从而将连续、模糊的过程分解为离散、确定的阶段。这种技术在机器人导航、工业自动化等场景中价值显著,尤其适用于需要应对多种场景、做出序列化决策的场合。在智能车竞赛中,赛道元素识别与路径跟踪是典型应用,其中环岛作为连续闭环的复杂场景,对系统的鲁棒性和决策连贯性提出了更高要求。通过图像处理提取赛道边线、宽度和曲率等特征,结合陀螺仪等传感器数据,可以构建一个专门处理环岛的状态

weixin_34033624的博客 561

论文中如何做出高清的图

1.通过Powperpoint进行画图 通过PPT画好图后,将每张图单独放在一页PPT上,然后保存。 保存成pdf之后,使用Adobe Acrobat Pro DC对图片进行裁剪,裁剪之后保存。(点击右侧的编辑PDF,然后点击裁剪页面) 最后在Latex中,加载图片的地方就加载为pdf。 2.svg格式 .............................................

Highlight_Jin的博客 5412

CS231n+assignment2(一)

cs231n作业二详解+代码

qq_56551150的博客 2411

SAP S/4HANA 数据归档的实施方法

实施 SAP S/4HANA 数据归档是一个系统的过程,涉及到策略的定义、技术的执行以及后续的维护和验证。正确的归档策略不仅能优化系统性能,还能帮助企业降低运营成本,确保数据安全,并符合相关法律法规的要求。通过以上案例,我们可以看到不同行业如何依据自己的业务需求和法规要求,利用 SAP S/4HANA 的强大功能来实现数据归档的目标。这些实践证明了数据归档在现代企业信息管理中的重要地位和作用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 890

基于NetworkX的图可视化实战:从电力系统路径规划到通用解决方案

图论是描述实体间关系的基础数学模型,广泛应用于社交网络、知识图谱、交通规划等领域。其核心原理是通过节点和边抽象复杂系统,并利用图算法(如最短路径、连通性分析)揭示隐藏模式与最优解。在工程实践中,Python的NetworkX库提供了从图构建、算法计算到可视化的一站式解决方案,极大提升了复杂网络的分析效率。本文以电力系统故障恢复这一典型场景为例,深入讲解如何利用NetworkX进行网络建模、路径搜索(如Dijkstra算法)及结果可视化,并涵盖性能优化与大规模网络处理技巧,为各类图分析任务提供了一套可复用的工

weixin_34210740的博客 438

高通SDX35平台 modem启动异常分析

SDX35 MIFI项目在生产时出现modem反复重启问题。经排查发现是modem在初始化GNSS模块时访问了不存在的硬件地址导致崩溃,原因是产线使用的SDX35 000-AB型号芯片阉割了GNSS功能,而本地测试使用的AA型号支持该功能。解决方案是通过修改modem编译选项,采用高通新提供的genlmm2选项(保留IMS和SMS功能但去除GNSS支持),最终解决了启动异常问题并满足VZW认证需求。

四儿家的小祖宗的博客 275

基于XGBoost与大数据技术的新能源汽车市场分析与需求预测系统构建

数据挖掘是从海量数据中提取有价值信息和知识的过程,其核心在于通过算法发现数据中的模式与规律。在工程实践中,机器学习算法如XGBoost因其高效处理非线性关系和高预测精度,成为解决复杂预测问题的关键技术。结合分布式计算框架如Hadoop/Spark,能够处理多源、海量的真实业务数据,为决策提供支持。这一技术组合在商业分析领域价值显著,尤其适用于市场趋势研判与需求预测等场景。本文聚焦于新能源汽车行业,探讨如何综合运用数据挖掘、XGBoost模型及大数据处理技术,构建一个从数据采集、特征工程、模型训练到可视化展示

weixin_34128839的博客 285

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58= GetFlowDropDown SQL注入

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58=、eHR/OA一体化智慧云平台、智慧一卡通云平台、行业软件开发与定制、智慧企业管理信息化咨询与项目服务为核心业务的顾问式管理咨询和软件个性定制开发的高科技股份集团公司。同鑫T9eHR信息华管理系统存在SQL注入漏洞,攻击者可通过该漏洞上传shell。关闭互联网暴露面或接口设置访问权限。利用sqlmap进行shell。

iSee857的博客 701

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MNIST+CNN项目实战:从模型训练到部署文档的完整闭环

深度学习入门绕不开计算机视觉,而卷积神经网络(CNN)正是视觉任务的核心技术之一。CNN通过卷积核自动提取像素特征,避免了传统手工设计特征的高成本,配合池化和全连接层即可完成分类任务。MNIST手写数字识别作为经典基准数据集,以6万张28×28灰度图片和清晰的十类别标签,成为验证CNN原理与工程流程的理想载体。从数据加载、网络设计、超参调优、错误分析到部署文档编写,这一完整链路不仅能帮助初学者建立系统的模型训练思维,也广泛应用于课程设计、毕业设计甚至银行票据识别等场景。本文以一个可复跑的MNIST+CNN项

weixin_32501329的博客 202

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

。。。。图像

图像算法里面的算法是。

2401_82607598的博客 260

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AI开发智能体:从代码补全到端到端工程闭环的范式跃迁

AI开发智能体(AI Development Agent)是一种以目标驱动、具备工具调用、记忆与迭代自愈能力的新型软件工程范式,区别于传统RAG+LLM架构的代码补全工具。其核心在于打破‘生成-执行’断层,通过Agentic框架实现需求理解、环境感知、自动调试与工作流闭环。技术价值体现在可审计性、上下文连续性与工程资产沉淀,广泛应用于数据科学Pipeline构建、微服务重构、AI模型部署等复杂场景。Windsurf Cascade正是这一范式的典型落地,将工程师从重复性调试与跨工具切换中解放,聚焦高阶设计与

agcozdwdfvds08078的博客 446

【Python】【matplotlib】键鼠响应事件

事件绑定fig.canvas.mpl_connect()import matplotlib.pyplot as plt def on_key_press(event): print(event.key) fig, ax = plt.subplots() fig.canvas.mpl_connect('key_press_event', on_key_press) plt.show()这段程序

guofei9987的博客 2万+

matplotlib.pyplot plt 画图时速度过慢的解决方案

目录问题描述问题分析解决方案 问题描述 在做YOLO这个目标检测算法的时候,项目需要构建自己的数据集。该数据集需要使用python中matplotlib.pyplot的plt函数来绘制大量的图片数据集。使用plt.savefig()保存图片,然而题主发现,开始的时候保存的频率很高,但保存频率会逐渐降低,一小时之后,好几分钟才能保存一张图片!为此开始查找解决方案。 问题分析 随着时间的增长,plt保存图片的频率逐渐降低,说明应该是有资源被堆积,可能存在内存泄漏!为此题主观察PC的内存变化,果然内存越用越多,说

zhao527254253的博客 1万+

matplotlib键盘鼠标事件(tcy)

键盘鼠标事件:2018/10/24 https://matplotlib.org/users/event_handling.html?highlight=event%20inaxes --------------------------------------------------------------------------------- 1.1.鼠标事件 # 当鼠标在子图...

tcy-阿春 1万+

python 多进程保存图片,速度加倍

Python中的多线程和多进程有所区别,这里采用多进程,作为样例么有用进程池,而是手动创建两个进程,用于保存列表中的图片 单个进程的耗时: 21.24s 两个进程的耗时:10.69s 用了两个进程,耗时减半,实际应用中可以,用进程池的Queue的方式时间进程间信息共享,利用lock保证数据的安全,加lock会增加耗时,需要妥善处理 import queue import threading import os import cv2 import time from multiprocessing.

weixin_41449637的博客 1914

【官方教你】提高效率超30倍!matplotlib绘制散点图plt.scatter太慢了!

代码 see also matplotlib官方cheatsheets(GitHub链接)截图如下: 吐槽 既然plot这么强,为什么不把scatter搞得强一点呢?希望matplotlib再接再厉!

千行百行的博客 7537

python单线程、多线程、多进程下载图片(io密集型)耗时对比

天天Python GIL,光嘴上说但是实际并没有真正测试对比过。 今天测试了一下Python的多线程、多进程、单线程的下载图片效率。 实测Python多线程在io密集型的情况下还是比单线程快很多的,引用一下另一位博主解释的原因: io是分为网络io和磁盘io,一般情况下,io有发送数据(output)和返回数据(input)两个过程。比如以浏览器为主体,浏览器发送请求给服务器(output...

wangjinyu124419的博客 2279

用PyOpenGL/OpenGL高速(异步)保存像素到内存

用Pyopengl高速复制像素到图片 **最近用到Pyopengl需要将实时渲染窗口保存成array以便进一步对图片操作处理,基于都速度上的需求,采用PBO的方式。和直接glreadpixels, 单个PBO,双异步PBO分别进行速度比较,异步PBO速度最快。 说实话这东西资料着实少,有些bug根本不知道怎么改,比如glreadpixels最后一个参数得填成0,写成None的话就会报错,这个坑填了...

xdt89460的博客 2427

Python 爬虫保存图片最快速得方式,让你少走弯路

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:孤独的明月 ( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 ) 最近在写爬虫但是图片保存用了很多种方法都没办法实现 最后用这种方法实现了 import os,base64 import requests as req from PIL impo

weixin_49345590的博客 713
上一篇: python 打包windows服务 开机自启动
下一篇: pandas导出excel表格时报错:ValueError: No engine for filetype: ‘‘
一届纯良
博客等级 码龄8年 13粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一届纯良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值