想要绘制一个图形,那就必须知道这个图形的基本轮廓,基于这个轮廓的走势来进行绘图,这也是大多数绘图所采用的模式。在这里,我们脑洞大开一下,基于概率的角度出发来绘制一片植物叶子。

英国数学家Michael Barnsley描述了如何对一个点进行重复的简单变换,从而创建类似蕨类植物的结构。他提出了以下步骤来创建类似蕨类植物的结构,以(0,0)为初始点,按事先分配的概率随机选择下述变换规则。

第三方库:matplotlib(需自己安装)

代码:

import randomimport matplotlib.pyplot as plt
def trans1(L):#变换1    x=0.85*L[0]+0.04*L[1]    y=-0.04*L[0]+0.85*L[1]+1.6    return x,y
def trans2(L):#变换2    x=0.2*L[0]-0.26*L[1]    y=0.23*L[0]+0.22*L[1]+1.6    return x,y
def trans3(L):#变换3    x=-0.15*L[0]+0.28*L[1]    y=0.26*L[0]+0.24*L[1]+0.44    return x,y
def trans4(L):#变换4    x=0    y=0.16*L[1]    return x,ydef getN(list):    r=random.random()#生成0-1的随机数    mp=0    List=[]    for i in list:        mp=mp+i        List.append(mp) #得到分布    for i,j in enumerate(List):#得到符合条件的下标        if r<=j:            return i
def transform(L):    w=[0.85,0.07,0.07,0.01]    index=getN(w) #得到下标    if index==0:        res=trans1(L)    if index==1:        res=trans2(L)    if index==2:        res=trans3(L)    if index==3:        res=trans4(L)    return res
def draw(n):     x=[0]#初始横坐标     y=[0]#初始纵坐标     x1=0     y1=0     for i in range(n):         x1,y1=transform([x1,y1])         x.append(x1)         y.append(y1)     return x,yn=eval(input('please input the number of the pionts that you want to use:'))x,y=draw(n)plt.plot(x,y,'g*')plt.title('The {0} pionts'.format(n))#设置标题plt.axis('off')#隐藏坐标轴plt.show()

结果:

注:此处使用了10000个点。

注:此处使用1000个点。

很显然,10000点的效果似乎比1000个点较好,当然,你也可试试100000个点,看看有什么效果!

学习的过程中从来都不是一帆风顺的,会遇到各种各样的困难,但一段时间后,回过头来看时,一定会发现不一样的精彩!

使用python从概率角度绘制植物叶子!相关推荐

  1. 机器学习:性能度量篇-Python利用鸢尾花数据绘制ROC和AUC曲线

    文章目录 前言 一.ROC与AUC 1.ROC 2.AUC 二.代码实现 总结 前言 内容接上一篇机器学习:性能度量篇-Python利用鸢尾花数据绘制P-R曲线_fanstuck的博客-CSDN博客_ ...

  2. Python 三维动画生成 绘制螺旋线

    原文链接: Python 三维动画生成 绘制螺旋线 上一篇: Python 三维曲线 下一篇: 英语文章背诵概率 效果 三维绘制曲线 ''' p1 x1,y1,z1 p2 x2,y2,z2 p3 x3 ...

  3. python使用turtle库绘制一个100长度的十字架_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例...

    使用python图形模块turtle库绘制樱花.玫瑰.圣诞树代码实例 发布时间:2020-08-22 15:57:19 来源:脚本之家 阅读:76 作者:Soul fragments 今天为大家介绍几 ...

  4. 用python画玫瑰花教程-利用Python的turtle库绘制玫瑰教程

    用Python的turtle库绘图是很简单的,闲来无事就画了一个玫瑰花,下面奉上源码.... 源码: ''' Created on Nov 18, 2017 @author: QiZhao ''' i ...

  5. python画图代码七彩蟒蛇-Python实现七彩蟒蛇绘制实例代码

    本文主要研究的是Python编程turtle的实例,绘制一个七彩蟒蛇..具体如下. 第2周的课后练习里,有一道题目,要求修改"蟒蛇绘制"程序,对Python 蟒蛇的每个部分采用不同 ...

  6. python如何计算概率事件_145、Python实现概率分布

    一.概率分布 概率分布,是概率论的基本概念之一,主要用以表述随机变量取值的概率规律.为了使用的方便,根据随机变量所属类型的不同,概率分布取不同的表现形式. 概率分布包括离散概率分布和连续概率分布. 离 ...

  7. Python:Turtle图形绘制

    Python:Turtle图形绘制 Turtle库 demo1.正方形螺旋线的绘制 (1)利用 turtle 库绘制一个正方形螺旋线 (2)绘制斜螺旋线 (3)绘制彩色斜螺旋线 demo2.经典蟒蛇的 ...

  8. 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图

    美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...

  9. python奥运五环_Python绘制奥运五环

    绘制奥运五环主要涉及到Python中的turtle绘图库运用: turtle.forward(distance) 向当前画笔方向移动distance像素长度 turtle.backward(dista ...

最新文章

  1. java iterator 将int_ListIteratorlt;Egt; listIterator(int index)_Java.util包|WIKI教程
  2. 易语言基础编程知识〖E语言手册〗
  3. JAVA学习笔记(8)
  4. dll已加载但找不到入口点dllregisterserver_Java 是如何加载类的?
  5. 十五天精通WCF——第十一天 如何对wcf进行全程监控
  6. php 获取 table,php – 获取表对象(App_Model_TableName)作为获取结果(Zend Framework)
  7. command对象的ExecuteScalar方法
  8. iOS开发 UILabel实现自适应高宽
  9. SQL数据查询之——嵌套查询
  10. 如果创建表提示数据库已经存在该对象,那该怎么办
  11. 命令行模式下导入导出MySQL数据库
  12. wikisql 数据集解释_【wiki维基百科中文数据集】抽取wiki数据集——实操
  13. OA办公——SwebUI开源应用解决方案
  14. 『市场基础变量计算』
  15. leet code 006:ZigZag Conversion
  16. 《17.Deep Pyramidal Residual Networks》
  17. Social Recommendation with Strong and Weak Ties 学习笔记
  18. 3年风雨兼程-编程程软件测试终打破测试培训行业乱象
  19. python中bytes_Python3中的bytes和str类型
  20. FeedBurner: 使用RSS路由器的风险

热门文章

  1. k-means+matlab 之辣鸡学算法
  2. 二手书交易平台相关调研
  3. 【AdvancedLocomotionSystemV】第七篇 C++ 实现角色蹲伏和跑步细节
  4. 特别舍得花钱的穷人们
  5. JAVA基础-06.集合-15.【Map】
  6. 2018,ANG发展峰会惊喜来袭
  7. 诺基亚C5智能手机的功能非常好,并具有一定程度的可取性
  8. 社区发现算法FastUnfolding的GraphX实现(转载)
  9. 数据分析的基本思想是什么
  10. STM32驱动WK2168串口扩展芯片完整教程