python pillow库画图_python几种柱状图画法以及简单图片处理pillow库的学习

本文介绍了使用Python的PIL库进行图像处理的基本操作,包括图像压缩、大小调整、切割和模式转换。同时,文章详细讲解了如何使用matplotlib库绘制柱状图,探讨了直方图、堆叠柱状图、并列柱状图的参数设置与技巧,并分享了在图表中添加文本和数值信息的方法。
摘要由CSDN通过智能技术生成

之前说要插播一期画图心得,所以本期就介绍一下一些常见图的画法~为了get文末gif的合成和倒放的小彩蛋,还简单学了一个关于处理图片的库”

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

[emmmmm,比如这样.......]

01

画图方法

下面详细介绍直方图的参数设置,其它类型的图类似.

1. Figure 和 Subplots  "二选一"

首先建立画布,设置大小颜色,画图的时候有两种方法,一种是通过添加子图的方法(可以画一幅或多幅画),一种没有运用子图(画布中只有一幅图).

没有用到子图的方法:

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

画柱状图就是一个函数(plt.bar),其实,线图是(plt.plot),散点图是(plt.scatter),箱线图是(plt.boxplot)....

下面是用到子图的方法:

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

可以看出,添加子图之后,不过是将画图对象变成了某个特定的子图,方法还是一致的(在一些参数设置上有稍微不同),当然如果你不设置subplots(2,2),而是设置成(1,1)或者不设置参数,都只生成一个图,和第一个图的效果一样.

2.关于 Figure 和 Subplots 的 Tips

在plt.figure中设置的背景色只限于输出在屏幕上,savefig()里只有再一次设置背景色facecolor才可以在保存的图片中加入背景色,此处颜色可以和开头在plt.figure中设置的颜色不同.

plt.savefig( )必须写在plt.show( ) 的前面,否则输出是一个白板.

plt.subplots( )可以生成两个对象,一个是figure,一个是subplots,不写参数默认是1*1,所以写参数的画,一定要是两个整数.子图的索引与列表索引方法一致.

关于subplots的参数中,重要的参数是sharex,sharey,如果各个子图之间共享x和y轴,仅留下最下面和最左边的坐标.

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

3.其他参数设置

以建子图的方法为例,接下来对柱状图进行标签,网格线,标题等等的完善(以下所有的用法在其他图中一样适用).

在ax.bar()的参数中添加柱的宽度width,bottom指的是y轴的开始位置(在stacked-bar堆积柱状图时常用到),颜色color, 边界颜色edgecolor

修改x轴的刻度以及设置刻度标签分别使用set_xticks()和set_xticklabels(),比如上图中x轴的刻度是默认生成的,并没有列出列表a的值,可以通过set_xticks()修改.set_xticks( )就是指明将刻度线放在哪些位置上(就是设置把哪几个坐标点露出来),set_xticklabels就是在这些位置上加上标签,y轴一样的方法

设置坐标轴,例如将图中右侧和上侧的边框线去掉

添加x和y轴的标签,使用set_xlabel( )和set_ylabel( )

添加网格线grid( ),可以设置线型,颜色,沿着x轴画还是y轴画网格线

添加图例(legend( ))和标题(set_title( )),图例的参数在ax.bar( )中通过label=(“ ”)传入。

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

当然,你还可以更华丽一点,比如这样:(在对子图进行画图时ax.bar( ),传入的color可以是一个颜色列表)

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

4.关于不同类型柱状图以及遇到的问题

比如画了30条柱子,手动输入set_xticklabels比较麻烦,其实可以读取文件,将其写入一个列表,这样在设置刻度标签时只需要传入列表名称就可以了.

关于堆叠柱状图,上面提到的把bottom参数设置成为第一组数据的y值就可以了,当然更准确一点,你还可以加上误差线(就是第二组数据的y轴在第一组y轴的基础上绘制).

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

关于并列柱状图,只需要保证他们的x坐标刚好相差一个宽度即可.

所以在画图的时候第一组数据的x减去宽度的一半,第二组数据加上宽度的一半就可以了.

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

想要在图中加上文本或者对应的数值信息,可以用ax.text( )完成

[总结] 当然不同的图中会涉及到独有的参数,比如点图中设置点的形状等等,不过就是举一反三大同小异罢了~官方文档上除了常见的几类之外,还有热图,小提琴图等等的详细代码~

[reference]matplotlib.pyplot官方文档:https://matplotlib.org/index.html

02

pillow库

接下来就简单看一眼pillow库,如何对图像继续压缩、改变大小、切割一部分、换模式and改格式。

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

功能很很容易实现的,要是还不满意,你甚至还可以加一点滤镜(硬核P图~)引入ImageFilter即可。

最后就是关于gif动图的处理,gif 的拆分、倒放、合并~

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

合成图片效果(随手几张图emmmm):

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

倒放GIF效果图(好魔性aaaaaa):

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

b207c797c491?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

[reference]https://pillow.readthedocs.io/en/latest/

想看生物狗如何在编程中求生存?

欢迎关注我的公众号:听见我的voices

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值