用Matplotlib,妈妈再也不担心我没有表情包斗图了
全文共3003字,预计学习时长6分钟
Netflix、Instagram、YouTube、电影还有电视剧,这些都有什么共同之处呢?它们都是视觉媒介,吸引着形形色色的观众。
今时今日,大部分人逐渐放弃读书、听书的方式,而选择观看电影、电视剧去了解一个故事。也许有人持不同意见,认为人们还未曾放弃书籍,但认清这现实吧——喜爱看电影的人要比爱读书的人多得多。
以上讨论了视觉成为当下重要沟通形式的原因。同时这也说明了数据可视化在数据科学等众多领域中的重要性。那Python程序员们又如何展示所收集的宝贵数据呢?所幸,有一个非常有用的数据可视化工具,它就是……
什么是Matplotlib?
Matplotlib是编程语言Python中最流行也最实用的一种绘图库,其受众不仅仅有杰出的数据科学家,还包括刚入门想学绘图的编程新手。Matplotlib可以绘制各种各样的图形和图像:
· 散点图
· 折线图
· 3D图
· 柱状图
· 等等
用户在Matplotlib上可以自定义各种图形,使用喜爱的颜色,尽情发挥想象力!
也许有人问,“它是怎么产生的呢?”——一位叫约翰 D·亨特(John D. Hunter)的人在2003年创造了这个库。MATLAB是当时另一款流行的数据分析与数据可视化软件,亨特本身是MATLAB的独家用户,后来受其启发,为Python创建了类似的绘图库。
可惜约翰·亨特在2012年去世了。如今迈克尔·多洛特布(Michael Droettboom)等许多人一起参与此绘图库的维护工作。由于它本身是一个开源库,因此下文也不再对其历史过多赘述,感兴趣的读者可以前往以下网站了解哦。
时至今日,Matplotlib依然是数据可视化和数据分析工具中最方便且最出名的工具之一,其中原因就在于其免费且开源。
任何人都可以下载Python和Matplotlib,然后开始绘制自己的专属图像。那么赶紧开始行动吧,一边阅读下文一边使用此绘图库,这个过程必定十分有趣。下面请欣赏Matplotlib的可视化能力吧。
使用Matplotlib打造emoji
也许有人用过它们,有人喜爱它们,甚至还有人讨厌它们,但接下来我们要做的就是用Matplotlib创建最新的交流方式——emoji!
你可不要轻易觉得好笑,先想想这些表情如今有多流行,又有多少人成为它们的忠实粉丝。甚至还有一部emoji大电影。
从这一点来看,无论是Python程序员也好,非程序员也好,用Matplotlib来重新打造一款emoji一定很有意思。事不宜迟,一起试试吧:
即使还未安装Matplotlib,没有关系,继续阅读吧。在正式开始前,需感谢上图笑脸已给出其代码,可以从以下网站获取:https://gist.github.com/bbengfort/dd9d8027a37f3a96c44323a8303520f0
接下来就可以根据自己的喜好改变这张图像啦。
Emoji打造指引
首先键入numpy,这个代码后可以添加必要的数学函数,记得在matplotlib后面补充.pyplot,这一代码可以继续填写用于绘图的函数。
先输入两个变量(fig, ax)。fig值可通过plt.figure()以及参数 figsize=(8,8) 得出,同时figsize=(8,8)表示了图表的大小。而ax可通过fig.add_suplot()以及表示图像大小的参数得出。最后输入plt.show()和plt.grid(),前者表示演示该图像,后者表示显示网格线。
下方的空白画布将用于绘制新的emoji。首先确定脸型,然后再画上眼睛和嘴巴。
要创建脸部,可使用代码ax.scatter()构建散点图,但只需在画布上绘制一个点。通过scatter()函数,得出以下参数
· [.5],[.5]; 表示点坐标
· 键入c = yellow以及edgecolor = gold,这两个代码分别表示脸部和边界的颜色。
· linewidth;对应边框厚度。
· s;代表整张图像的面积
好了,完成了一个“太阳”一样的形状后,就开始绘制眼睛咯。
接下来继续在原来基础上添加用以绘制眼睛的ax.scatter()函数。这时需调整坐标为 [.37],[.60],当然你也可以根据个人意愿进行调整。继续输入c=darkgoldenrod,无需输入边界颜色。眼睛的面积为1700。
加上一只眼睛后,图像变得有点像柠檬。但柠檬并不是最终目的,下面继续给它填上 “笑容”。
不过现在就不使用 ax.scatter(),而是要键入一些更复杂的函数(放心啦,也没有那么复杂)。首先确定两个新的变量 X 和 Y,然后使用 ax.plot()绘制它们的位置。
最后使用numpy,导入代码np.linspace()以及三个参数,得出X = np.linspace(.37, .63, 100)。前两个参数表示x轴的起点与终点,而第三个参数则代表这个“笑容”上点的数目(在这张图上共有100个点)。
在方程式 Y = 4 * (X-.5)**2 + 0.3中,可以对其四个数字进行修改。第一个数字(4)表示“笑容”弯曲的角度,如果把这个数字改成负数,最后就会得到“苦瓜脸”。第二个数字(.5)则稍稍改变了“笑容”的角度。第三个数字(2,即指数)改变了这条线的弧度,而最后一个数字(0.3)则负责确定“笑容”在y轴上的位置。
最后导入代码 ax.plot(X, Y, c=’darkgoldenrod’, linewidth=20),在(X, Y)变量后紧接颜色参数(c),而这里的颜色与眼睛颜色一致,“笑容”线条粗细值为20。
现在的笑脸只有一只眼睛,有点像海盗或者独眼侠,离一个完整的emoji还差得远呢,继续写代码吧。
在画布上画出眉毛和眨着的眼睛,重复之前的步骤画出三条线。为了方便,请直接复制下方代码。
如图所示,新图案的代码与之前“笑容”的代码一样,只是变量稍作改变,变量的名字也有点不一样。目前使用的变量值是最合适的,但其他数值也可以接受~
搞定!终于创造出属于自己的emoji了。但网格线和轴怎么办?别担心,接下来的几行代码就可以消除它们了。
使用函数ax.spines.set_visible()删掉网格线——在 ax.spines 后面的方括号中填入网格线对应的方向,然后在set_visible() 的括号中填入False。随后再导入代码 ax.set_xticks()和ax.set_yticks(),在括号内填上一个没有内容的方括号,这两个代码可以消除x和y轴上的数字。
太棒了,终于完成了一个眨眼emoji了!也许操作起来还是有点难度,但是使用Matplotlib的过程还是挺有趣的。快向小伙伴们秀一秀这用代码创造的emoji吧!
最后总结
相信大家已对Matplotlib的使用方法有了更好的了解,但它的功能并不仅局限于此,还有3D绘图等许多方面没有涉猎。
如果你想深入研究Matplotlib,或者想创建更多emoji,你也可以自行研究,说不定就可以用Matplotlib创建一个全新的3D emoji!
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)
用Matplotlib,妈妈再也不担心我没有表情包斗图了相关推荐
- python画笑脸表情_用Matplotlib,妈妈再也不担心我没有表情包斗图了
全文共3003字,预计学习时长6分钟 Netflix.Instagram.YouTube.电影还有电视剧,这些都有什么共同之处呢?它们都是视觉媒介,吸引着形形色色的观众. 今时今日,大部分人逐渐放弃读 ...
- 【Python爬虫系列教程 21-100】小姐姐是时候带大家爬取表情包,再也不担心你没有表情包发了!
是这样的 有一次想要斗图 配图 就在网上搜索表情包 然后发现了一个表情巨多的网站 不小心动起了邪念 产生了兴趣 那就 把它们存下来吧 用 requests 请求了一下 发现这个网站没有做反爬 发现这里 ...
- python绘制横向柱状图 妈妈再也不用担心我不会画图了
python绘制横向柱状图 妈妈再也不用担心我不会画图了 前言 实现代码 成果 前言 事情要从一次画图开始说起 当我开开心心搞到一堆数据,以为能够休息的时候,这时候我突然想起来,是不是绘制成柱状图更直 ...
- 做一个python的旅游系统_有了它,妈妈再也不担心我感冒了,Python使用迭代器进行天气预报...
上一篇博文我们使用Python制作了一个简单的天气预报小程序(天气渐冷,Python小工具让你随时掌握气温变化,做温暖的穿衣达人).今天,需求有变,如果我们想去旅游,备选方案有北京.上海.广州.新疆等 ...
- 妈妈再也不用担心别人问我是否真正用过redis了
1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...
- 学会这招,妈妈再也不担心我的排名上不去了
学会这招,妈妈再也不担心我的排名上不去了 前言 一.思路分析 二.获取答案 三.提交答案 四.猜猜猜 写在最后 Tip:本文仅供学习与参考,且勿用作不法用途~ 前言 相传,就在前几日,kimol君在网 ...
- ERC721:全生命周期精析,妈妈再也不用担心我不会玩NFT合约啦
ERC721:全生命周期精析,妈妈再也不用担心我不会玩NFT合约啦 由于篇幅有限,本博客将围绕ERC721核心展开介绍,文章内容尽量做到通俗易懂,但其中不可避免地可能涉及一些新手不友好的概念,您可以查 ...
- Java实现印刷体转手写体—妈妈再也不用担心我被罚抄作业了
Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 文章目录 Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 缘起 开始开发 测试效果 开源地址和总结 郑重声明 因本文中涉及到爬虫 ...
- 情绪控制,拥有开挂的人生——妈妈再也不担心,我找不到女朋友了
每个人都有自己的情绪,学会控制自己的情绪,你才能更好的控制自己的人生. 人之所以区别于其它的动物,其中很重要的一条就是因为我们可以控制自己的情绪.一个人连最基本控制情绪的能力都没有,还怎么能控制好自己 ...
最新文章
- qt中定时器Timer的使用
- LeetCode 104. Maximum Depth of Binary Tree--二叉树高度--递归或迭代--C++,Python解法
- ajax局部刷新后,如何让局部中的百度分享重新加载
- 再读《精通css》04:盒模型和空白边叠加
- WINCE viewbin命令
- 登录 googlecloud,链接数据库
- 四参数坐标转换c++_手持GPS的三参数计算方法
- linux经常使用解压缩命令
- 动态换ip如何实现_三种方法解决动态换IP需求
- springboot jar中没有主清单属性_Spring Boot 常见错误及解决方法
- 2019.1.5 DOM
- Python-爬取我去图书馆座位编码
- 【语音处理】基于matlab噪声信号功率谱【含Matlab源码 1712期】
- 如何删除电脑里的MobileGameMaster文件夹
- java.lang.IllegalStateException: Failed to convert message:‘‘ to outbound message.
- 【小波分析】一、小波分析入门基础介绍
- The types of the interface org.apache.flink.util.OutputTag could not be inferred.
- MATLAB信号处理---学习小案例(10)---Z反变换
- shell插入多行文本
- 使用nslookup命令检查DNS服务