明天是难得一见的国庆中秋双节合一,在这里除了祝大家节日快乐之外,我们还要送上一个“月饼”——当然这个月饼是不能吃的,因为它是用python做的。先给大家看一下效果图。

图1. 月饼效果图

画这样一个月饼,其实不需要太多的代码,笔者只用了不到50行代码,而且用的是我们经常用到的绘图库matplotlib,这对于我们大部分人来说是很容易上手的,下面笔者就详细介绍一下怎么画这样一个月饼。

首先导入各种需要的库:

import 

然后设置3个变量,这3个变量的用途到后面会有解释:

length 

接下来我们要画12条弧线,这12条弧线是月饼边缘的花纹:

arc1 

看到这里估计很多人懵逼了,代码是不是有点多了?实际上这些弧线都是来自于同一个Arc类,它们的用法都是一样的,只不过部分参数不同,所以我们只要掌握一个,其他的全都会了。这里笔者就用arc1来说明一下:

arc1 

其中 [0, length] 是这个Arc弧线的圆心,因为这个Arc类是一个椭圆形的一部分,所以其包含圆心、横轴、纵轴等参数,length变量就是arc1圆心的纵坐标,width=2*rheight=2*r 就说明这个椭圆的纵轴和横轴长度相等,其是一个圆,而不是椭圆,变量 r 就是这个圆的半径。angle=0 就是我们不需要对这个圆进行旋转,theta1=30theta2=150 是指明这个弧线的起始角度和终止角度,这里的角度分别是30度150度。而 ec='orange'linewidth=4 分别指边线的颜色和线条宽度,颜色我们设为橙色宽度为4。而这些弧线的效果图如图2所示,在图中笔者标出了arc1、arc5和arc9这3条弧线的位置,所有弧线按照逆时针方向排列。这些位置大同小异,大家只要计算好其各自的位置参数就行,这里就不再赘述了。

图2. 弧线效果图

然后我们再画一个圆,这个圆是月饼的主体部分,其圆心和整个月饼的中心是重合的,圆心位置我们选在了坐标原点,代码如下:

circle 

这里变量R就是这个大圆的半径,边线颜色设置为橙色,表面颜色设为白色。其效果如图3所示。

图3. 大圆效果图

接下来我们再画上一些花纹,这些花纹主要由8个扇形组成,其中有4个大的扇形和4个小的扇形,代码如下:

wedge1 

这里wedge1、wedge3、wedge5、wedge7是大扇形,wedge2、wedge4、wedge6、wedge8是小扇形,一个大扇形嵌套一个小扇形,其中wedge1嵌套wedge2,wedge3嵌套wedge4,以此类推。Wedge这个类和前面Arc有些类似,不过Wedge是圆的一部分,以wedge1为例:

wedge1 

其中[-2, 2]是这个Wedge所代表的圆的圆心,R-5 是其半径,90180分别代表起始和终止角度,ecfclinewidth这些都和前面Arc类的用法相似,这8个扇形的效果图如图4所示。在图中笔者标出了wedge1、wedge2、wedge5和wedge6的位置,所有扇形按照逆时针方向放置。

图4. 扇形效果图

最后我们再把公众号“CROSSIN”的名称加上,因为代码不多,所以把剩余所有代码都写在这里:

art_list 

art_list是我们设置的一个list变量,里面放有arc1到arc12这12个图形,然后再把circle以及8个扇形都加进去。ax.set_aspect('equal')是设置整个图形x轴和y轴同比例,for a in art_list: ax.add_patch(a) 是把art_list中所有图形加入到画布当中。而plt.text这行代码中,-18和-2.5是这个text的左下角的坐标,fontfamilyfontsize 分别是文字的字体和大小,bbox 是设置text边框的格式,这些参数也都和前面讲过的很多参数差不多,这里不再赘述。plt.ylimplt.xlim是设置整个画布的坐标范围。最终效果如图1所示。

当然我们也可以改变图片的颜色,比如设置成蓝色的,如图5所示,这个完全可以根据个人爱好而定。

图5. 蓝色月饼图

笔者在这里用了不到50行代码就画出了一个月饼,其中还有不少复用的,所以核心只有几个绘图函数,理解起来并不难。你也可以自己动手试一试,定制一块你自己的月饼。

最后再次祝大家,中秋快乐!国庆快乐!

作者:tyran
完整代码:https://gitee.com/crossin/snippet/tree/master/mooncake

----

获取更多教程和案例,

欢迎搜索及关注:Crossin的编程教室

这里还有更多精彩。一起学,走得远!

python画圆形螺旋线_中秋节到了,送你一个Python做的Crossin牌“月饼”相关推荐

  1. python画圆形螺旋线_【Python基础】利用 Python 搞定精美网络图!

    作者:叶庭云     编辑:Lemon      出品:Python数据之道 一.NetworkX 概述NetworkX 是一个用 Python 语言开发的图论与复杂网络建模工具,内置了常用的图与复杂 ...

  2. python画圆形螺旋线_用Python写一首中秋Rap

    中秋节马上就要到啦 各位小伙伴是不是 已经按捺不住激动的心情 心情早已飞到家里/旅游目的地 (此条屏蔽领导) 在写这篇文章之前 小编在网上 已经看到了许多关于 中秋节的各种段子和诗句 看到一些什么&q ...

  3. python画圆形螺旋线_这个Python项目,一秒生成可爱像素风图片

    本文转自:量子位,作者郭一璞整理来自:大邓和他的 Python像文字云一样,用各种小图拼出大的图片,构建一个像素风的世界,就像<我的世界>里一样,一定非常有趣.还可以拿来做拼贴画.十字绣等 ...

  4. python画圆形螺旋线_用Python一秒生成复古像素图片

    本文转自:量子位,作者郭一璞整理来自:大邓和他的 Python像文字云一样,用各种小图拼出大的图片,构建一个像素风的世界,就像<我的世界>里一样,一定非常有趣.还可以拿来做拼贴画.十字绣等 ...

  5. python画圆形螺旋线_如何用Python画一只机器猫?

    作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自信心的最好办法. 第一次学编程是在屏幕上敲出" ...

  6. python画圆形螺旋线_硬核教程,利用 Python 搞定精美网络图!

    硬核教程, 利用 Python 搞定精美网络图! 一.NetworkX 概述 NetworkX 是一个用 Python 语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进 ...

  7. python画圆形螺旋线_宝宝爱看小猪佩奇,很简单,让我们用python搞定它

    现在很多宝宝喜欢看小猪佩奇,今天就教大家用python的海龟画图画一个乖巧萌萌的小猪佩奇,引导对编程产生浓浓 的兴趣. 画图前引导 1.让我们打开百度,输入python进入python官网 2.在官网 ...

  8. python画圆形螺旋线_PS画结构素描与示范-金属管道台灯(电脑绘画)

    本课程为零基础入门课程,想从零学习的请看前面的课程. 还有视频教程 今天画得是金属管道台灯,这节课是讲结构素描相关知识 有的结构素描会添加一点光影变化,这种画法也可以,看个人需求了. 首先确定四点,上 ...

  9. python画静态烟花_人人都可以写的可视化Python小程序第二篇:旋转的烟花

    兴趣是最好的老师 枯燥的编程容易让人放弃,兴趣才是最好的老师.无论孩子还是大人,只有发现这件事情真的有趣,我们才会非常执着的去做这件事,比如打游戏.如果编程能像玩游戏一样变得有趣,我相信很多人就特别愿 ...

最新文章

  1. Relation Networks for Object Detection
  2. html5新特性 移除哪些,html5\CSS3有哪些新特性、移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?...
  3. @order注解_Spring Boot+OAuth2,一个注解搞定单点登录!
  4. ROW_NUMBER、RANK、DENSE_RANK的用法
  5. python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...
  6. win7系统0x0000001a蓝屏代码怎么办
  7. magento 上传图片slider Multiple Banner Extension
  8. Kotlin — 适用于 Web 开发
  9. ds哈希查找--链地址法_Hash冲突之开放地址法
  10. Java语法糖 : try-with-resources
  11. 数学建模算法与应用习题1-3 解析 MATLAB 整数规划
  12. pytorch教程 聊天机器人(详细注释attentionrnn输入输出shape等知识点...
  13. 【SPA项目的搭建】
  14. 《华尔街》观后笔记8——明暗创新
  15. 打开showModalDialog模式窗体并提交,且不打开新的IE窗口
  16. 大学应该教会学生什么?
  17. Mysql备份恢复(mysqldump)
  18. git pull某单个文件
  19. 计算机网络-数据传输
  20. 吴洪声十问CSDN蒋涛:年过35 岁,程序员们都去哪儿了?

热门文章

  1. Python 项目实践三(Web应用程序)第一篇
  2. Codeforces Beta Round #7 C. Line 扩展欧几里德
  3. [CLR via C#]1.6 Framework类库~1.9与非托管代码的互操作性
  4. Nginx高可用实战
  5. Linux安全运维进阶:SSH常见配置
  6. CentOS 7部署nfsen监控netflow
  7. Eclipse中 Junit 正常运行完了 可是方法覆盖率全红 解决办法 (附带②EclEmma插件安装方法④覆盖率抽出与合并)
  8. 关于写程序时「对数据库操作」的一些总结。
  9. spring设置全局异常处理器
  10. ios 代码截屏模糊问题解决办法