小言_互联网的博客

用Matplotlib,妈妈再也不担心我没有表情包斗图了

636人阅读  评论(0)

全文共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,加入读者圈,一起讨论最新鲜的人工智能科技哦~)


转载:https://blog.csdn.net/duxinshuxiaobian/article/details/102218015
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场