全文共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,妈妈再也不担心我没有表情包斗图了相关推荐

  1. python画笑脸表情_用Matplotlib,妈妈再也不担心我没有表情包斗图了

    全文共3003字,预计学习时长6分钟 Netflix.Instagram.YouTube.电影还有电视剧,这些都有什么共同之处呢?它们都是视觉媒介,吸引着形形色色的观众. 今时今日,大部分人逐渐放弃读 ...

  2. 【Python爬虫系列教程 21-100】小姐姐是时候带大家爬取表情包,再也不担心你没有表情包发了!

    是这样的 有一次想要斗图 配图 就在网上搜索表情包 然后发现了一个表情巨多的网站 不小心动起了邪念 产生了兴趣 那就 把它们存下来吧 用 requests 请求了一下 发现这个网站没有做反爬 发现这里 ...

  3. python绘制横向柱状图 妈妈再也不用担心我不会画图了

    python绘制横向柱状图 妈妈再也不用担心我不会画图了 前言 实现代码 成果 前言 事情要从一次画图开始说起 当我开开心心搞到一堆数据,以为能够休息的时候,这时候我突然想起来,是不是绘制成柱状图更直 ...

  4. 做一个python的旅游系统_有了它,妈妈再也不担心我感冒了,Python使用迭代器进行天气预报...

    上一篇博文我们使用Python制作了一个简单的天气预报小程序(天气渐冷,Python小工具让你随时掌握气温变化,做温暖的穿衣达人).今天,需求有变,如果我们想去旅游,备选方案有北京.上海.广州.新疆等 ...

  5. 妈妈再也不用担心别人问我是否真正用过redis了

    1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...

  6. 学会这招,妈妈再也不担心我的排名上不去了

    学会这招,妈妈再也不担心我的排名上不去了 前言 一.思路分析 二.获取答案 三.提交答案 四.猜猜猜 写在最后 Tip:本文仅供学习与参考,且勿用作不法用途~ 前言 相传,就在前几日,kimol君在网 ...

  7. ERC721:全生命周期精析,妈妈再也不用担心我不会玩NFT合约啦

    ERC721:全生命周期精析,妈妈再也不用担心我不会玩NFT合约啦 由于篇幅有限,本博客将围绕ERC721核心展开介绍,文章内容尽量做到通俗易懂,但其中不可避免地可能涉及一些新手不友好的概念,您可以查 ...

  8. Java实现印刷体转手写体—妈妈再也不用担心我被罚抄作业了

    Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 文章目录 Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 缘起 开始开发 测试效果 开源地址和总结 郑重声明 因本文中涉及到爬虫 ...

  9. 情绪控制,拥有开挂的人生——妈妈再也不担心,我找不到女朋友了

    每个人都有自己的情绪,学会控制自己的情绪,你才能更好的控制自己的人生. 人之所以区别于其它的动物,其中很重要的一条就是因为我们可以控制自己的情绪.一个人连最基本控制情绪的能力都没有,还怎么能控制好自己 ...

最新文章

  1. qt中定时器Timer的使用
  2. LeetCode 104. Maximum Depth of Binary Tree--二叉树高度--递归或迭代--C++,Python解法
  3. ajax局部刷新后,如何让局部中的百度分享重新加载
  4. 再读《精通css》04:盒模型和空白边叠加
  5. WINCE viewbin命令
  6. 登录 googlecloud,链接数据库
  7. 四参数坐标转换c++_手持GPS的三参数计算方法
  8. linux经常使用解压缩命令
  9. 动态换ip如何实现_三种方法解决动态换IP需求
  10. springboot jar中没有主清单属性_Spring Boot 常见错误及解决方法
  11. 2019.1.5 DOM
  12. Python-爬取我去图书馆座位编码
  13. 【语音处理】基于matlab噪声信号功率谱【含Matlab源码 1712期】
  14. 如何删除电脑里的MobileGameMaster文件夹
  15. java.lang.IllegalStateException: Failed to convert message:‘‘ to outbound message.
  16. 【小波分析】一、小波分析入门基础介绍
  17. The types of the interface org.apache.flink.util.OutputTag could not be inferred.
  18. MATLAB信号处理---学习小案例(10)---Z反变换
  19. shell插入多行文本
  20. 使用nslookup命令检查DNS服务

热门文章

  1. 【你不知道的事】JavaScript 中用一种更先进的方式进行深拷贝:structuredClone
  2. idea中的java文件是红色的原因及处理办法
  3. R语言 : 画散点图
  4. Spring之AOP学习
  5. UGUI——Graphic
  6. 国外开源镜像服务器站点汇总
  7. web安全之挖掘Linux内核漏洞
  8. 大数据基础课11 让你一看就懂的数据挖掘四大经典算法
  9. web前端入门到实战:css基础-定位+网页布局案例
  10. Vans携手洛杉矶现代艺术博物馆推出联名系列;关晓彤代言艾莱依羽绒服 | 知消...