Python-Matplotlib可视化(8)——图形的输出与保存(1)


实际使用场景下,我们可能希望获取程序运行过程中数据的情况,同时并不想打断程序的执行,而希望为每个运行步骤自动生成保存一张图片。Matplotlib可以灵活的将图形直接保存到图片文件中。

首先,我们将学习如何将图形输出到PNG文件。PNG文件是位图输出的理想选择,它依赖于无损压缩算法,并可以处理透明度。

import numpy as np

from matplotlib import pyplot as plt

x = np.linspace(-6, 6, 1024)

y = np.sinc(x)

plt.plot(x, y)

plt.savefig(‘sinc.png’, c = ‘c’)

生成PNG图片文件

Tips:要保存图片,只需使用plt.savefig()调用替换plt.show()调用,此时将不会弹出查看图形窗口。函数plt.savefig()的工作原理与plt.show()完全相同——解释plt命令并生成图形,区别在于处理结束时所做的操作。show()函数将图片数据发送到用户界面库以进行展示,而savefig()函数将图片数据写入文件。

同时savefig()函数提供了多种可选参数,让我们继续前进,开始探索吧。

控制透明度


当图形是网站或演示文稿的一部分时,图形之间可能需要叠加显示,透明度对于这样的整合是很重要的,图形必须以一种美学上令人愉悦和一致的方式与背景融为一体。

为了演示透明性,将创建一个图形并将其嵌入到网页中,与网页背景融为一体。

使用透明背景将图形渲染为PNG文件

为了将图形渲染为透明背景的PNG文件,需要使用plt.savefig(),并将可选参数transparent设置为True

import numpy as np

from matplotlib import pyplot as plt

x = np.linspace(-6, 6, 1024)

y = np.sinc(x)

plt.plot(x, y)

plt.savefig(‘sinc_1.png’, c = ‘c’, transparent=True)

使用透明背景将图形渲染为PNG文件

制作包含图形的HTML页面

在包含背景的网页上使用上一步骤中保存的PNG文件(网页背景图片background.jpg请替换为目录中存在的文件):

<img src=‘sinc_1.png’ width='800 height=‘600’>

制作包含图形的HTML页面默认情况下,plt.savefig()不会在输出中包含透明度信息。例如,当我们输出PNG图片时,PNG文件默认每像素24bit,每个8bit的通道仅存储像素的红色、绿色和蓝色分量。但是,当启用透明输出时,plt.savefig()保存的文件每像素32bit,附加的alpha通道存储透明度信息。

作为对比,如果我们使用不包含alpha通道的sinc.png

<img src=‘sinc.png’ width='800 height=‘600’>

不包含alpha通道的图形用于html中通过系列文章的学习,我们知道可以通过在绘图函数中(如plt.plotplt.scatterpltpie等)使用可选参数alpha控制Matplotlib生成的不同透明度级别的图形。如果alpha等于1,则图形将完全不透明,这是默认设置;如果alpha等于0,图形将完全不可见。

import numpy as np

import matplotlib.pyplot as plt

name_list = (‘Omar’, ‘Serguey’, ‘Max’, ‘Zhou’, ‘Abidin’)

value_list = np.random.randint(99, size=len(name_list))

pos_list = np.arange(len(name_list))

plt.bar(pos_list, value_list, alpha = .75, color = ‘c’, align = ‘center’)

plt.xticks(pos_list, name_list)

plt.savefig(‘bar.png’, transparent = True)

在HTML页面中进行显示:

<img src=‘bar.png’ width='800 height=‘600’>

使用alpha可选参数控制透明度

控制输出分辨率


默认情况下,使用位图图片的输出时,Matplotlib自动调节输出的大小和分辨率。根据位图图片的用途,我们也可以自己选择分辨率。例如,如果图片是一张大海报的一部分,可能需要高分辨率,如果想生成缩略图,那么需要较低分辨率。

plt.savefig()函数提供可选参数dpi控制输出分辨率:

import numpy as np

import matplotlib.pyplot as plt

name_list = (‘Omar’, ‘Serguey’, ‘Max’, ‘Zhou’, ‘Abidin’)

value_list = np.random.randint(99, size=len(name_list))

pos_list = np.arange(len(name_list))

plt.bar(pos_list, value_list, alpha = .25, color = ‘c’, align = ‘center’)

plt.xticks(pos_list, name_list)

plt.savefig(‘bar_1.png’, dpi = 300)

控制输出分辨率

Tips:savefig()函数的可选参数dpi控制以DPI(每英寸点数)表示的图片分辨率。默认情况下,Matplotlib将输出8 x 6空间单位的图形,即4/3的纵横比。在matplotlib中,1个空间单位等于100像素。因此,默认情况下,Matplotlib提供800 x 600像素的图片文件。如果我们使用dpi=300,图片大小为8*300 x 6*300,即2400 x 1800像素。

我们已经学习了如何控制图形的纵横比,如果将纵横比和DPI结合起来,就可以完全控制图片的总体比例。例如,在512 x 512像素的图片中显示六边形。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

01c05e862fe4e9.png)

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值