编程语言
首页 > 编程语言> > 分形、分形几何、数据可视化、Python绘图

分形、分形几何、数据可视化、Python绘图

作者:互联网

本系列采用turtle、matplotlib、numpy这三个Python工具,以分形与计算机图像处理的经典算法为实例,通过程序和图像,来帮助读者一步步掌握Python绘图和数据可视化的方法和技巧,并且让读者感受到“ 龙枝屈曲竞分形,瑰丽绮错千万状”的分形魅力。

中国传统中的『分形』

『分』是会意字,由八和刀上下组合而成,表示用刀把物体切开。分的本义是分别、分开,引申为辨别、分辨,又引申为从主体分出的部分、分支。

『形』在篆文中是形声字,『彡』为形,『幵』(jian)为声,『彡』表示绘制的图案花纹。形的本义指形体,引申指物体的形状和样子。又引申指事物表现出的较为抽象的特征、情状。再转作动词,引申为显露、表现。

                                                                                --商务印书馆《新华大字典》

『分形』由『分』与『形』组成,融合了两个字的含义,在古汉语中有三种意义:

宋明期间,理学盛行,其中的一个核心命题叫做『理一分殊』,也就是『分形』的哲学。『理一分殊』这一观点强调的是:理为万殊的根源,是本体,由本体可以化生出形相各异的天地万物。这里的『分』,不是指分散分解,而是化生。

这种分形化生的思想在佛教之中更为流传,千手观音、化身五五图以及观音菩萨三十三化身图都是这种思想的表现。《慧命经》中有一首解释《化身五五图》的诗:“分念成形窥色相,共灵显迹化虚无。”这首诗中的“分念成形窥色相”的含义,可以用南宋文学家陆游的一首咏梅绝句来诠释:

闻道梅花坼晓风,雪堆遍满四山中。

何方可化身千亿,一树梅前一放翁。

听闻梅花已在晨风中绽放,纷繁似雪,遍布山中,我要如何才能靠近每一株梅花呢?“分念成形”,一而二,二而三,化生千亿个身影,让每一棵梅花树前都有一个陆游常在。

大自然的分形几何

“云彩不是球体,山岭不是锥体,海岸线不是圆周,树皮并不光滑,闪电更不是沿直线传播。”

                                                             --《大自然的分形几何》

“内外灵光到处同,一佛国在一沙中。一粒沙含大千界,一个身心万法同。”

                                                             --《西游记》第14回

变化莫测的云彩,连绵起伏的山脉,风起云涌的波浪,犬牙交错的海岸线,树木、闪电、星团、水系、泥裂、冻豆腐,火焰、真菌,小麦须根、树冠、花草、支气管,以及小肠绒毛、大脑皮层……,从宏观到微观,从自然现象到生物构造,大自然向人类展示着各式各样、千变万化的形态,而这些形态都有着一个共同点,那就是:不规则、支离破碎,无法用经典的、规则的几何图形来进行描述。

在经典的欧氏几何中,图形是规则的,无论是墙壁、车轮、道路还是建筑物,都可以用直线、圆弧、圆锥或球等形状来描述。这些物体是基于规则生成的,所以在这些领域,欧氏几何游刃有余,然而,当面对大自然,面对各式各样的鬼斧神工时,它却往往显得力不从心。面对这样的状况,科学家们一直探索着从欧氏几何体系中脱离出来的方法。直到1975年,著名数学家Mandelbrot构思和发展了一种新的几何学:分形几何。这种几何学把自然形态看作是具有无限嵌套层次的精细结构,这种结构在不同的尺度下保持着某种相似性,也就是说,局部与整体相似,亦或是,局部是整体的缩影。

分形的原文Fractal是Mandelbrot用拉丁词根拼造出来的单词,意思是细片、破碎、分数、分级等等。70年代末,fractal传到中国,台湾根据其意直译为“碎形”,然而,中国科学院物理所的李荫远院士提出“fractal”应当译成“分形”,得到许多科学家的赞同,最终,fractal被定译为“分形”。李荫远院士的“分形”之译,准确地抓住了fractal的本质,并结合中国传统文化中『分形』的内涵。由此,中国传统的自然哲学思想,与几何学中的“fractal”理念,完美地融合到了一起 ——“简单产生复杂,混沌孕育秩序”。

数据可视化

“在计算机学科的分类中,利用人眼的感知能力对数据进行交互的可视表达以增强认知的技术,称为可视化,它将不可见或难以直接显示的数据转化为可感知的图形、符号、颜色、纹理等,增强数据识别效率,传递有效信息。                                                                                                                                                                                -- 《数据可视化》陈为

我们有一种与生俱来的“语言天赋”,无须后天的训练和学习,就可以流利地解读图像语言。一份数字化报表,人们需要逐条浏览,才能获知销量情况,但是只要一张柱状图,就可以让人一眼知晓所需要的信息。一座城市,道路复杂、河流交错、人群聚居,但是只要一张地图,就可以让人快速地了解这座城市的物理空间结构和人群分布。一家大型企业,有很多不同职能的部门,工作的细分程度也很高,但是只要一张组织结构图,就可以让人迅速地明了这家企业的层级关系和职责分工。

人眼是一个视觉信号输入处理器,这个处理器可以同时处理大量的信息,它具有很强的模式识别能力,可以快速地、甚至潜意识地解读图形、颜色、纹理等图像符号,解读的速度更是远远大于对数字或文本等形式的感知。正是因为人类视觉的这个特点,从文明初始起,人类便开始通过可视化来进行信息的记录、推理和分析,借助图形和图像,来研究、探索和传播万事万物的原理和规律。分形几何的发展也是如此,科学家们建立模型,在计算机上进行实验,然后将实验数据可视化,并在形成图形和图像的过程中,来捕获和探索大自然各种形态的奥秘。在本系列中,我们将采用Python绘图工具,来还原这些计算机实验以及数据可视化的过程。

数据可视化的工具有许多,最经典的莫过于Excel,大多数人都有使用Excel生成各种数据统计图的经验,然而Excel的缺点是流程的操作步骤繁琐、容易出错,并且很多时候不可复用,相比之下,Python的绘图更简单,只需要几行代码,便可以调用数据,生成各式图表,并且可以复用。

作为数据可视化工具,Python有以下优点:

本系列采用的Python工具为turtle、matplotlib和numpy,其中以turtle模块开始,作为入门,逐步过渡到专业级的matplotlib和numpy库。matplotlib库是比较底层的python可视化第三方库,有着可定制性强、图表资源丰富、简单易用、达到出版质量级别的特点。Python中有许多可用于数据可视化的库,但大多数库都是基于matplotlib进行开发封装的,所以,学习python数据可视化,必须要学习matplotlib库,它的语法虽然略复杂,但非常灵活,几乎可以生成任何类型的图形,无论是简笔画、艺术图还是数据统计图。

(未完待续)

编后语:

这个系列是一个大杂烩,但并不是把材料简单地进行堆砌,它更像是一锅炖菜,猪肉炖粉条、小鸡炖蘑菇,诸如此类地,材料如下:

大火烧开,小火慢炖,希望成品能有新意,并富有营养。:)

写作,对我来说是件快乐的事,分享自己的知识和思想,在输入-输出-反馈的循环过程中,不断地提升自己,生活也由此变得充实而有趣,所以,无论是问题、纠错,还是建议、意见,都希望您能反馈给我,帮助我提升文章的质量。

标签:Python,fractal,matplotlib,分形,可视化,数据
来源: https://www.cnblogs.com/timedot/p/14511853.html