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

【Matplotlib】figure方法之图形的保存

🎈个人主页:甜美的江
🎉欢迎 👍点赞✍评论⭐收藏
🤗收录专栏:matplotlib
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!

在这里插入图片描述

figure方法之图形的保存

    • 一 函数介绍
      • 1.1 功能
      • 1.2 返回值
      • 1.3 函数签名
      • 1.4 参数详解
      • 1.5 示例
    • 二 文件格式选择与特性
      • 2.1 PNG (Portable Network Graphics):
      • 2.2 JPEG (Joint Photographic Experts Group):
      • 2.3 PDF (Portable Document Format):
    • 三 注意事项
      • 3.1 文件路径和文件名:
      • 3.2 文件格式的选择:
      • 3.3 DPI设置:
      • 3.4 图像裁剪:
      • 3.5 透明背景:
      • 3.6 颜色配置:
      • 3.7 图像大小:
      • 3.8 关闭图形对象:

引言:

数据可视化在现代科学和工程领域中扮演着至关重要的角色,而Matplotlib作为Python中最流行的绘图库之一,为我们提供了丰富的工具来创建各种引人入胜的图形。在这个广阔的可视化领域中,图形的保存是不可忽视的关键环节。Matplotlib的figure对象为我们提供了强大而灵活的手段,能够在保存图形到文件或在脚本中实时显示之间切换。本文将深入研究Matplotlib中figure方法之图形的保存,为读者提供系统而全面的指导,助力他们更好地运用这些功能进行数据可视化。

在这个探讨的过程中,我们将学习如何使用savefig()方法将图形保存到文件,探讨保存时的一些技巧和注意事项。通过这篇博客,读者将更好地理解Matplotlib中图形的保存方法,为他们的数据可视化工作提供有力支持。

Matplotlib中的savefig()方法是一个强大的功能,主要用于将绘制的图形保存为图像文件。该方法能够捕捉当前的Figure对象,并将其导出为常见的图像格式,如PNG、JPEG、PDF等,以便于分享、发布或进一步处理。

一 函数介绍

1.1 功能

savefig()方法用于将当前Figure对象中的图形保存为文件。

根据文件名的后缀,自动选择保存的文件格式,支持多种常见图像格式,如PNG、JPEG、PDF等。

可以通过**kwargs参数指定其他保存选项,如分辨率、边界裁剪等。

1.2 返回值

该方法没有返回值,直接将图形保存为文件。

1.3 函数签名

matplotlib.pyplot.savefig(fname, bbox_inches=None, pad_inches=0.1, transparent=False, frameon=None, metadata=None, dpi=figure.dpi, bbox_extra_artists=None, format=None, facecolor='w', edgecolor='w', orientation='portrait', papertype=None, backend=None)

1.4 参数详解

1 fname (str or path-like or file-like, optional):

保存文件的路径或文件对象。支持多种文件格式,如PNG、JPEG、PDF等。文件扩展名将用于确定文件格式。

2 bbox_inches (str or Bbox, optional):

指定要保存的图表区域的边界框(bounding box)。可以是字符串('tight’表示紧凑,'standard’表示标准)或者是Bbox对象。

3 pad_inches (float, optional):

边框和图表内容之间的额外间距,以英寸为单位。

4 transparent (bool, optional):

如果为True,则保存图像时背景将为透明。默认为False。

5 frameon (bool or None, optional):

是否在保存图像时包含图表边框。如果为None,则根据transparent参数自动判断是否包含边框。

6 metadata (dict, optional):

图像元数据,存储一些额外的信息,如作者、创建时间等。

7 dpi (float, optional):

每英寸点数(dots per inch),控制图像的分辨率。默认使用Figure对象的dpi。

8 bbox_extra_artists (list of Artist, optional):

需要包括在保存图像时的额外艺术家(artists),例如图例。

9 format (str, optional):

保存的图像格式,可以是’png’、‘pdf’、'jpeg’等。如果不提供,将从fname参数中的文件扩展名中自动推断。

10 facecolor, edgecolor (color, optional):

图像的背景颜色和边框颜色。

11 orientation (str, optional):

图像的方向,可以是’portrait’(纵向)或’landscape’(横向)。

12 papertype (str, optional):

指定用于保存图像的纸张类型,例如’A4’、'letter’等。

13 backend (str, optional):

指定图像保存时使用的后端。如果未指定,则使用当前的Matplotlib后端。

1.5 示例

代码:

import matplotlib.pyplot as plt# 生成示例图像
x = [1, 2, 3, 4]
y = [2, 4, 6, 8]# 创建图形对象
fig, ax = plt.subplots()
ax.plot(x, y, label='Example Plot')# 设置图形标题和坐标轴标签
ax.set_title('Example Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')# 添加图例
ax.legend()# 指定文件路径和文件名,使用合法的文件名字符
output_path = r"D:/image/plot_example.png"# 设置DPI以获得高分辨率输出
dpi_value = 300# 使用bbox_inches参数裁剪图像的空白区域
bbox_inches_value = 'tight'# 设置透明背景,选择PNG格式以保存带有透明背景的图像
transparent_value = True# 保存图像时的注意事项
plt.savefig(output_path, dpi=dpi_value, bbox_inches=bbox_inches_value,transparent=transparent_value)# 关闭图形对象以释放资源
plt.close()

运行结果:
在这里插入图片描述
成功在指定文件路径保存图片。

值得一提的是,如果plt.show() 在plt.savefig()前,就会导致保存图片失败的情况。

改进上面代码为:

plt.show()
# 保存图像时的注意事项
plt.savefig(output_path, dpi=dpi_value, bbox_inches=bbox_inches_value,transparent=transparent_value)

将plt.show() 加在plt.savefig()前,运行结果如下:

在这里插入图片描述
文件夹中并没有出现我们想保存的图片。

二 文件格式选择与特性

当使用Matplotlib的savefig()方法保存图像时,可以选择不同的文件格式,每种格式都具有其独特的特性和用途。常见的文件格式包括PNG、JPEG、PDF等。下面是对每种格式的特性和选择因素的详细介绍:

2.1 PNG (Portable Network Graphics):

特性:
支持透明度。 无损压缩,图像质量高。
最适合保存带有透明背景的图像,如图标、标志等。

选择因素:
当需要保存带有透明背景的图像时,PNG是首选格式。
适用于网络上的图像显示,因为文件大小相对较小,且不会损失图像质量。

2.2 JPEG (Joint Photographic Experts Group):

特性:
支持压缩,但是是有损压缩,可能导致图像质量损失。
不支持透明度。 适合保存照片和其他真实场景的图像。

选择因素:
当需要保存照片或复杂图像时,JPEG是一个不错的选择,因为它可以在一定程度上减小文件大小而不明显降低图像质量。
不适合保存带有透明背景的图像。

2.3 PDF (Portable Document Format):

特性:
支持矢量图和文本,可以无限缩放而不失真。
通常用于创建高质量的打印品,如报告、海报等。

选择因素:
当需要保存图像以便进行打印或在文档中嵌入时,PDF是首选格式。
可以保存复杂图形并确保在不同设备和尺寸下保持清晰度。

三 注意事项

在使用Matplotlib的savefig()方法保存图像时,有一些注意事项需要考虑,以确保最佳结果和避免潜在问题:

3.1 文件路径和文件名:

指定明确的文件路径和文件名,确保保存到正确的目录和使用合适的文件名。
使用合法的文件名字符,以避免潜在的文件系统问题。

3.2 文件格式的选择:

根据用途选择合适的文件格式。例如,选择PNG格式以保存带有透明背景的图像,选择JPEG格式以保存照片。

3.3 DPI设置:

DPI(每英寸点数)决定了图像的分辨率。在保存图像之前,确保设置了适当的DPI,以获得高质量的输出。 使用dpi参数来调整分辨率,

plt.savefig("output.png", dpi=300)

3.4 图像裁剪:

在保存图像之前,可以使用bbox_inches参数来裁剪图像的空白区域。

plt.savefig("output.png", bbox_inches='tight')

3.5 透明背景:

如果需要保存带有透明背景的图像,确保设置transparent=True。这对于PNG格式特别重要。

3.6 颜色配置:

如果图像中使用了自定义颜色,确保保存时考虑到颜色配置。有时候,在不同设备上显示可能会受到颜色配置的影响。

3.7 图像大小:

在调整图像大小时,使用figsize参数确保图像具有适当的尺寸。不同用途可能需要不同的图像大小。

3.8 关闭图形对象:

在保存图像后,及时关闭相关的图形对象,以释放资源并避免潜在的内存泄漏。可以使用plt.close()方法关闭当前图形。

import matplotlib.pyplot as plt# 生成图像
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])# 保存图像时的注意事项
plt.savefig("output.png", dpi=300, 
bbox_inches='tight', transparent=True)# 关闭图形对象
plt.close()

通过注意这些事项,可以确保使用savefig()方法保存图像时避免常见的问题,并获得符合预期的输出结果。

总结:

在本文中,我们深入探讨了Matplotlib中figure方法之图形的保存。通过对savefig()方法的详细介绍,我们了解了如何选择文件格式、设置分辨率,并避免边界裁剪问题,以确保保存的图形高质量且符合预期。

这些方法的灵活运用,将使我们在数据可视化的旅程中更具掌控力。通过深入理解Matplotlib提供的这些功能,我们能够以更加精准、美观的方式呈现数据,为科研、工程和其他领域的可视化工作注入新的活力。希望本文能够为读者提供清晰的指导,使他们在图形的保存方面更加游刃有余。

这篇文章到这里就结束了

谢谢大家的阅读!

如果觉得这篇博客对你有用的话,别忘记三连哦。

我是甜美的江,让我们我们下次再见

在这里插入图片描述

在这里插入图片描述

相关文章:

【Matplotlib】figure方法之图形的保存

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:matplotlib 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…...

数据库管理-第142期 DBA?DBA!(20240131)

数据库管理142期 2024-01-31 数据库管理-第142期 DBA?DBA!(20240131)正文总结 数据库管理-第142期 DBA?DBA!(20240131) 作者:胖头鱼的鱼缸(尹海文&#xff09…...

react 之 zustand

zustand可以说是redux的平替 官网地址:https://zustand-demo.pmnd.rs/ 1.安装 npm i zustand2.基础使用 // zustand import { create } from zustand// 1. 创建store // 语法容易出错 // 1. 函数参数必须返回一个对象 对象内部编写状态数据和方法 // 2. set是用来…...

leetcode-回文链表

234. 回文链表 在此对比的值,不是节点 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def isPalindrome(self, head: Optional[ListNod…...

Pinia:一个Vue的状态管理库

Pinia的使用方法包括以下步骤: 安装Pinia:通过yarn或npm进行安装: yarn命令: yarn add pinianpm命令: npm install pinia创建根存储:在main.ts中引入Pinia插件,并创建一个根存储。这可以通过创建…...

2024 Flutter 重大更新,Dart 宏(Macros)编程开始支持,JSON 序列化有救

说起宏编程可能大家并不陌生,但是这对于 Flutter 和 Dart 开发者来说它一直是一个「遗憾」,这个「遗憾」体现在编辑过程的代码修改支持上,其中最典型的莫过于 Dart 的 JSON 序列化。 举个例子,目前 Dart 语言的 JSON 序列化高度依…...

云计算概述(云计算类型、技术驱动力、关键技术、特征、特点、通用点、架构层次)(二)

云计算概述(二) (云计算类型、技术驱动力、关键技术、特征、特点、通用点、架构层次) 目录 零、00时光宝盒 一、云计算类型(以服务的内容或形态来分) 二、云计算的12种技术驱动力 三、云计算的关键技术 四、云计…...

物流平台架构设计与实践

随着电商行业的迅猛发展,物流行业也得到了极大的发展。从最初的传统物流到现在的智慧物流,物流技术和模式也在不断的更新与升级。物流平台作为连接电商和物流的重要媒介,其架构设计和实践显得尤为重要。 一、物流平台架构设计 1. 前端架构设…...

RedHat8.4安装邮件服务器

一、配置发件服务器 1.1 根据现场IP,配置主机名 vim /etc/hosts 192.168.8.120 mail.test.com 将主机名更改为邮件服务器域名mail.test.com 1.2 关闭防火墙,禁止开机启动 systemctl stop firewalld systemctl disable firewalld 1.3 关闭selinux v…...

Linux Shell系列--dirname 去除基本文件名

一、目的 上一篇中我们介绍了basename命令的使用,本篇我们介绍dirname命令,dirname 命令与 basename 互补,它负责删除路径中的基本文件名部分(包括扩展名),只保留目录部分。 二、介绍 dirname首先去除字符…...

池化技术的总结

文章目录 1.什么是池化技术2.池化技术的应用一、连接池二、线程池三、内存池 3.池化技术的总结 1.什么是池化技术 池化技术指的是提前准备一些资源,在需要时可以重复使用这些预先准备的资源。 在系统开发过程中,我们经常会用到池化技术。通俗的讲&am…...

H5简约星空旋转引导页源码

H5简约星空旋转引导页源码 源码介绍:一款带有星空旋转背景特效的源码,带有四个按钮 下载地址: https://www.changyouzuhao.cn/11655.html...

前端学习之路(4) vue2和vue3的区别

一. 根节点不同 vue2中必须要有根标签vue3中可以没有根标签,会默认将多个根标签包裹在一个fragement虚拟标签中,有利于减少内存。 二. 组合式API和选项式API 在vue2中采用选项式API,将数据和函数集中起来处理,将功能点切割了当…...

网络原理-TCP/IP(5)

TCP协议 延迟应答 它也是基于滑动窗口,提高效率的一种机制,结合滑动窗口以及流量控制,能够以延迟应答ACK的方式,把反馈的窗口,搞大.核心在于允许范围内,让窗口尽可能大. 如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小. 1.假设接收端缓冲区为1M.一次收到了5…...

Docker 常用命令详细介绍

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 使用概率最高的命令…...

10G PON演进到50G PON

10G-PON是万兆无源光网络,光纤链路传输速率能够达到10Gbps。根据ZTE的报告称,截至2023年6月,全球10G PON出货量已超过3000万个PON端口,其中中国市场份额约占80%。 10G PON在中国市场的广泛部署,显着推进了10G PON产业链…...

智能指针——浅析

智能指针 本人不才,只能将智能指针介绍一下,无法结合线程进行深入探索 介绍及作用 在异常产生进行跳转时,通过栈帧回收进行内存释放,防止内存泄漏 基于RAII思想可以创建出只能指针 RAII(Resource Acquisition Is Initializatio…...

JAVA后端上传图片至企微临时素材

1.使用场景 在使用企业微信API接口中,往往开发者需要使用自定义的资源,比如发送本地图片消息,设置通讯录自定义头像等。 为了实现同一资源文件,一次上传可以多次使用,这里提供了素材管理接口:以media_id来…...

MySQL-----初识

一 SQL的基本概述 基本概述 ▶SQL全称: Structured Query Language,是结构化查询语言,用于访问和处理数据库的标准的计算机语言。SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。 ▶美国国家标…...

[基础IO]文件描述符{重定向/perror/磁盘结构/inode/软硬链接}

文章目录 1. 再识重定向2.浅谈perror()3.初始文件系统4.软硬链接 1. 再识重定向 图解./sf > file.txt 2>&1 1中内容拷贝给2 使得2指向file 再学一个 把file的内容传给cat cat拿到后再给file2 2.浅谈perror() open()接口调用失败返回-1,并且错误码errno被适当的设置,…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析,分为​​已启动​​和​​未启动​​两种场景: 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​:当其他组件(如Activity、Service)通过ContentR…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...