最近,我在阿里天池大数据竞赛中发现了一些练手的项目,例如,用Python“画月饼过云上中秋”,虽然中秋已经过去了,但还是好奇Python是怎么画出月饼的?

先上图↓

火龙果馅的月饼。主要使用了Matplotlib模块NumPy模块,这里我只修改了字体、线宽和颜色相关代码。修改后的完整代码如下:

# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
length = 20
R = 3 ** 0.5 * length / (3 ** 0.5 * cos(pi / 12) - sin(pi / 12))
r = 2 * sin(pi / 12) * R / 3 ** 0.5
##ec为线条颜色,可以自由替换
arc1 = Arc([0, length], width=2 * r, height=2 * r,angle=0, theta1=30, theta2=150, ec='orange', linewidth=8)
arc2 = Arc([-length / 2, length / 2 * 3 ** 0.5], width=2 * r, height=2 * r,angle=0, theta1=60, theta2=180, ec='orange', linewidth=8)
arc3 = Arc([-length / 2 * 3 ** 0.5, length / 2], width=2 * r, height=2 * r,angle=0, theta1=90, theta2=210, ec='orange', linewidth=8)
arc4 = Arc([-length, 0], width=2 * r, height=2 * r, angle=0, theta1=120, theta2=240, ec='orange', linewidth=8)
arc5 = Arc([-length / 2 * 3 ** 0.5, -length / 2], width=2 * r, height=2 * r,angle=0, theta1=150, theta2=270, ec='orange', linewidth=8)
arc6 = Arc([-length / 2, -length / 2 * 3 ** 0.5], width=2 * r, height=2 * r,angle=0, theta1=180, theta2=300, ec='orange', linewidth=8)
arc7 = Arc([0, -length], width=2 * r, height=2 * r, angle=0, theta1=210, theta2=330, ec='orange', linewidth=8)
arc8 = Arc([length / 2, -length / 2 * 3 ** 0.5], width=2 * r, height=2 * r,angle=0, theta1=240, theta2=360, ec='orange', linewidth=8)
arc9 = Arc([length / 2 * 3 ** 0.5, -length / 2], width=2 * r, height=2 * r,angle=0, theta1=270, theta2=390, ec='orange', linewidth=8)
arc10 = Arc([length, 0], width=2 * r, height=2 * r, angle=0, theta1=300, theta2=420, ec='orange', linewidth=8)
arc11 = Arc([length / 2 * 3 ** 0.5, length / 2], width=2 * r, height=2 * r,angle=0, theta1=330, theta2=450, ec='orange', linewidth=8)
arc12 = Arc([length / 2, length / 2 * 3 ** 0.5], width=2 * r, height=2 * r,angle=0, theta1=0, theta2=120, ec='orange', linewidth=8)
##ec为线条颜色,fc为填充颜色,可以自由替换
circle = Circle((0, 0), R, ec='orange', fc='DeepPink', linewidth=8)
##ec为线条颜色,fc为填充颜色,可以自由替换
wedge1 = Wedge([-2, 2], R - 5, 90, 180,ec='orange', fc='DeepPink', linewidth=8)wedge2 = Wedge([-5, 5], R - 12, 90, 180, ec='orange',fc='DeepPink', linewidth=8)
wedge3 = Wedge([-2, -2], R - 5, 180, 270, ec='orange',fc='DeepPink', linewidth=8)
wedge4 = Wedge([-5, -5], R - 12, 180, 270, ec='orange',fc='DeepPink', linewidth=8)
wedge5 = Wedge([2, -2], R - 5, 270, 360, ec='orange',fc='DeepPink', linewidth=8)
wedge6 = Wedge([5, -5], R - 12, 270, 360, ec='orange',fc='DeepPink', linewidth=8)
wedge7 = Wedge([2, 2], R - 5, 0, 90, ec='orange',fc='DeepPink', linewidth=8)
wedge8 = Wedge([5, 5], R - 12, 0, 90, ec='orange',fc='DeepPink', linewidth=8)art_list = [arc1, arc2, arc3, arc4, arc5, arc6, arc7, arc8, arc9, arc10, arc11, arc12]
art_list.extend([circle, wedge1, wedge2, wedge3, wedge4, wedge5, wedge6, wedge7, wedge8])
fig, ax = plt.subplots(figsize=(8, 8))
ax.set_aspect('equal')
for a in art_list:ax.add_patch(a)
# 关闭坐标轴
plt.axis('off')
##ec为线条颜色,color为字体颜色,可以自由替换
plt.text(-15, -2.5, '火龙果馅', bbox=dict(boxstyle='square', fc="w", ec='orange', linewidth=4), fontsize=50, color='orange')
plt.text(-28, -33, '明月几时有,把酒问青天', fontsize=30, color='#aa4a30')
plt.ylim([-35, 35])
plt.xlim([-35, 35])
plt.show()

注意:上述代码在Python IDLE或PyCharm下运行,如果参加阿里天池大赛就不要修改关于字体的代码了。

喜欢的小伙伴可以去尝试画出自己的专属月饼~

网址如下:

新人赛-天池大数据竞赛-天池大赛-阿里云天池 https://tianchi.aliyun.com/competition/gameList/coupleList

对于新手来说,学习赛里面的项目当作练手是非常不错的。当然,如果你有一定的实力也可以去挑战有奖金的项目哦!

干货来了!

关于代码中用到的matplotlib.patches模块的几个关键类的说明如下图所示。

如果想更换月饼颜色,颜色值参考如下图所示。

如果你想学习更多的关于Pandas模块、Matplotlib模块和NumPy模块的知识和案例可以参考一下《Python数据分析从入门到实践(全彩版)》这本书。

原创不易,如果觉得有点用,希望可以随手点个赞,拜谢各位老铁。

python练手_Python数据分析练手项目相关推荐

  1. python数据分析软件_Python数据分析工具

    Numpy Python没有提供数组功能,虽然列表可以完成基本的数组功能,但他不是真正的数组.Numpy内置函数处理速度是c语言级别,因此尽量使用内置函数,避免出现效率瓶颈的现象. Numpy的安装: ...

  2. python客户价值分析_Python数据分析与应用航空公司客户价值分析.ppt

    Python数据分析与应用航空公司客户价值分析.ppt 大数据,成就未来 * 大数据挖掘专家 * 大数据挖掘专家 大数据,成就未来 航空公司客户价值分析 * 目录 分析航空公司现状 1. 行业内竞争 ...

  3. python建筑案例_Python数据分析实战-链家北京二手房价分析

    前言 最近在自学Python,通过学习大家的分享案例,看到使用Python进行较多的主要4个方面:爬虫,数据处理,数据可视化以及机器学习建模.对我来说目标就是: 熟练使用numpy pandas 进行 ...

  4. python入门三剑客_python数据分析三剑客基础之matpoltlib初解

    一.什么是matplotlib? python的底层绘图工具,主要做数据可视化图表,源自matplot. 二.为什么要学matplotlib? 1.它能将数据进行可视化,更直观的呈现出来 2.它能让数 ...

  5. python炒股模块_Python数据分析-numpy模块、pandas模块.基本操作、股票案例

    索引操作和列表同理 arr = np.random.randint(0,100,size=(5,6)) arr array([[14, 89, 71, 96, 1, 94], [30, 98, 10, ...

  6. python数据统计_Python数据分析--Iris数据集实战

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视 ...

  7. python框架实例_Python之Flask框架项目Demo入门

    Flask是微型web框架,框架本身十分精简,微型并不代表其功能弱,核心代码基于Werkzeug, Jinja 2 这两个库,它以插件形式的进行功能扩展,且插件易于安装与使用,并且可以自行开发扩展插件 ...

  8. python数据分析图_Python数据分析:手把手教你用Pandas生成可视化图表的教程

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  9. python 组合数库函数_Python数据分析之Numpy库(笔记)

    2.1 ndarray多维数组 2.1.1 创建ndarray数组 通过NumPy库的array函数,即可轻松地创建ndarray数组.NumPy库能将数据(列表,元组,数组,或其他序列类型)转换为n ...

最新文章

  1. oracle 判断11位数字,45个非常有用的 Oracle 查询语句小结
  2. 【怎样写代码】参数化类型 -- 泛型(三):泛型之类型参数
  3. EID-:宏病毒组技术在新发腹泻病毒鉴定中的应用
  4. 基于Annotation的输入校验
  5. asp.net 生成下载word的两种方式
  6. vCenter6.0配置二:配置HA群集
  7. sprongboot mysql登录注册_后端开发:SpringBoot实现注册与登录功能
  8. 信息学奥赛C++语言: 统计闰年
  9. Java讲课笔记10:类的封装
  10. gsonformat 实例_10分钟看懂Photoshop 实例:在阈值模式下调整照片的清晰度
  11. 【元胞自动机】基于matlab元胞自动机超车换道【含Matlab源码 359期】
  12. C语言中图形 * 的输出
  13. 远程办公——如何在外远程控制家里/公司的电脑,利用cpolar内网穿透
  14. 【T+】T+常用数据库表参考
  15. Appium 按压元素进行滑动
  16. c语言幻数游戏,C中的幻数
  17. 低成本更清晰,下一代视频编码技术将如何实现这一目标?
  18. 计算机技术应用社会实践课题,PLC自动化专业社会实践报告.docx
  19. 支付宝事件溯源:2005年“雅巴“交易再回首
  20. Ubuntu搭建MongoDB集群

热门文章

  1. Django从理论到实战(part8)--URL中添加参数
  2. 初识Mysql(part16)--我需要知道的2条Mysql语句之子查询
  3. 日志库 winston 的学习笔记 - 创建一个使用 winston 的 Node.js 应用
  4. SAP UI5 初学者教程之五:视图控制器初探 试读版
  5. 如何启用 SAP Business Technology Platform 上的 Mobile Services
  6. SAP Spartacus里的injector
  7. SAP Spartacus的Component 请求
  8. 计算机世界的虚拟机,容器和医学界的人工硬脑膜
  9. every function in scala is an instance of a class
  10. hybris导出系统已有数据的两种方式