全文共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,没有关系,继续阅读吧。在正式开始前,需感谢上图笑脸已给出其代码,可以从以下网站获取:gist.github/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,导入代码npnspace()以及三个参数,得出X = npnspace(.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学习与发展的干货
如需转载,请后台留言,遵守转载规范
,