亲宝软件园·资讯

展开

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

timedot 人气:0

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

中国传统中的『分形』

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

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

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

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

  • 相似且关系密切。如成语“分形同气”,出自《吕氏春秋.精通》:“父母之于子也,子之于父母也,一体而两分,同气而异息。”,意思是父母与子女虽形体个别,但气息相通,彼此之间的关系相似、密切。
  • 分离。如南朝.宋.鲍照的《赠故人马子乔》中言道:“双剑将别离,先在匣中鸣。烟雨交将夕,从此遂分形。”这里的『分形』表示形同而分,形似而别的意思。
  • 形态复杂。如张衡的《西京赋》中道:“奇幻倏忽,易貌分形。”这里的『分形』指的是变化的各种形态。

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

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

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

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

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

大自然的分形几何

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

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

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

                                                             --《西游记》第14回

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

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

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

数据可视化

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

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

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

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

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

  • Python是一门开源的高级编程语言,有着简洁、易读、灵活、易维护和模块化的优良特性,并且可以轻松地与其它编程语言及软件集成;
  • Python有着丰富的第三方工具库,可视化工具有基本的Matplotlib,也有复杂的Seaborn、Bokeh,这些工具的使用简便,代码可复用、可交互,并且可以画出Excel不具备的图以及特殊效果;

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

(未完待续)

编后语:

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

  • 主料:Python绘图、分形与混沌;
  • 辅料:中国传统自然哲学思想、古风配色、古诗词等等;

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

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

加载全部内容

相关教程
猜你喜欢
用户评论