Python三角函数可视化

Contra
2019-07-08
Python三角函数可视化

【编程德鲁伊】系列是我的横向编程练习笔记,每期围绕一个主题(数学物理电子图形声音...),用几种程序语言分别实现。战法牧贼同时修,能抗能打能奶能开溜。


编程德鲁伊 - 数学篇 - 三角函数可视化 Python 实现 sine-visualization-reactjs


前两节用MaxMSP和JavaScript做了三角函数(正弦和单位圆)的可视化,长这样:

trig-max-visualization.gif

【编程德鲁伊 - 数学篇】MaxMSP三角函数可视化


sine-js-croped.gif

【编程德鲁伊 - 数学篇】JavaScript (React) 三角函数可视化


这次用Python来实现。


Python绘制图形的方式同样很多,好在我都不太熟,Python新手,所以没有上一篇JavaScript选型那么纠结。

以快速出活为目标,直接Google “python data visualization lib” 这几个关键词,得到的lib里,按github里star数排序,发现了老而坚挺的Matplotlib,于是就这么愉快的决定了。

Matplotlib logo

Matplotlib 安装 考虑到后续其他练习主题,选择Anaconda提供的全家桶安装方式,包含了Matplotlib在内的一堆科学计算数据分析相关的lib。

Anaconda

由于最近办公地点不固定,工作电脑也不固定,部署了远程开发环境(VSCode Remote真香!),代码部署、运行在Azure服务器上,手头用一台上网本编辑代码和查看效果。因此选择服务器环境对应的Linux版本。

Anaconda Python 3.0

注意,这里优先选择左边Python 3.x的版本,因为Matplotlib 3.0以上版本,只支持Python 3。

Matplotlib 3.0 is Python 3 only.

For Python 2 support, Matplotlib 2.2.x will be continued as a LTS release and updated with bugfixes until January 1, 2020.

Matplotlib装好后就可以开始搬砖了。

(实际上写了几句后发现,远程开发Python,实时查看图形效果仍不太方便,我还又安装了Jupyter Notebook,直接在浏览器里边写边运行边看效果。)

另外还装了ffmpeg,把Matplotlib运算后得到的动画,转存成mp4。 ffmpeg,也用Anaconda来安装,第六感觉得这样可能坑少一点。。 conda install -c conda-forge ffmpeg

有了Matplotlib,Sine函数动画部分,其实也没几句代码,大部分占篇幅的,实际上是坐标配置、画一些辅助线等功能。

代码如下图所示:

sine python script

基本是按教程和一些参考文章照猫画虎来的,用这种库的特点,大部分思路集中在数学公式本身的算法逻辑上。

附上一份不错的参考文章: Animations with Matplotlib

最终效果:

sine-visualization-reactjs


Talk is cheap. Show me the code!

本例及【编程德鲁伊】系列大部分代码都开源在这里: https://github.com/avantcontra/coding-druid


公众号/B站/小红书/抖音/知乎:实验编程

实验编程社群资源、公开课: https://ghc.h5.xeknow.com/s/hzkMX

实验编程情报中心(会员): https://ghc.h5.xeknow.com/s/2BCFuJ

Cheers🍻

Contra