Skip to content

ranlix/DrawHeart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

笛卡尔的第十三封情书——用matplotlib画一颗真心(红)

这两天教一个盆友python的基础,教着教着她问,程序猿一般怎么表白,会不会突然屏幕哪弹出来一颗大红心,于是乎想着,学习编程,怎么着也不能像大学里学c那么枯燥,得有乐趣呀..

蓝后就想起之前在知乎上看见的一个神奇的事件, 具体的么,喏[http://www.zhihu.com/question/21239607] PS1: 这里神奇的是题主和答主竟然在一起了!!!!羡煞旁人!! 所以勇敢的去追吧!!骚年! [strong]具体公式就是:「r=a(1-sin θ)」[/strong], 咳咳,这里是极坐标,当然直角坐标系好写,直观,但是公式是二元二次方程,代码稍微麻烦点,先选简单的粗暴的解决问题先。

扯回正题,查了一下python画图的库,于是就有了numpy和matplotlib. 安装过程中不太顺利,主要是windows下cmd里去用easy_install matplotlib 或者pip install matplotlib 都没办法顺利安装,墙内墙外都不成。 好在直接去官网下了安装包,但是光安装exe或者msi还是不成的,会有很多细节没办法完成。 所以重启电脑,再次easy_install matplotlib ,顺利安装(亲测*2 次,妥妥的)。

接下来就是代码啦,我们去matplotlib的官方网站去看,它有很多现成的模型,我们找一个极坐标的,咦,[http://matplotlib.org/examples/pylab_examples/polar_demo.html] 在这里的示例代码里,theta其实就是我们公式里的θ.

ax = plt.subplot(111, polar=True) 这一行里面刚好有个参数polar就是polar coordinate: 极坐标的意思,polar=True刚好就解决了直角坐标系无法适应上面公式的问题。

ax.plot(theta, r, color='r', linewidth=3) 这里是画线的方法,括号里的参数分别是theta 和r,但是我们的目标不是示例中的螺旋线,所以 ax.plot(theta, 1 - np.sin(theta), color='r', linewidth=2) 这才是我们正确的心形图像。 运行一下,看粗来的是不是想要的! 咦貌似还不错是伐? 咦貌似还不错是伐?

但素要显得实心一点吧,是不是更好看?那这里我们就不能用ax.plot()的方法,而是要用fill(填充), 再看看结果.

About

Add code files

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages