1. 零基础学python需要多久
Python学习路线。
第一阶段Python基础与Linux数据库。这是Python的入门阶段,也是帮助零基础学员打好基础的重要阶段。你需要掌握Python基本语法规则及变量、逻辑控制、内置数据结构、文件操作、高级函数、模块、常用标准库模块、函数、异常处理、MySQL使用、协程等知识点。
学习目标:掌握Python基础语法,具备基础的编程能力;掌握Linux基本操作命令,掌握MySQL进阶内容,完成银行自动提款机系统实战、英汉词典、歌词解析器等项目。
第二阶段WEB全栈。这一部分主要学习Web前端相关技术,你需要掌握HTML、CSS、JavaScript、jQuery、BootStrap、Web开发基础、VUE、Flask Views、Flask模板、 数据库操作、Flask配置等知识。
学习目标:掌握WEB前端技术内容,掌握WEB后端框架,熟练使用Flask、Tornado、Django,可以完成数据监控后台的项目。
第三阶段数据分析+人工智能。这部分主要是学习爬虫相关的知识点,你需要掌握数据抓取、数据提取、数据存储、爬虫并发、动态网页抓取、scrapy框架、分布式爬虫、爬虫攻防、数据结构、算法等知识。
学习目标:可以掌握爬虫、数据采集,数据机构与算法进阶和人工智能技术。可以完成爬虫攻防、图片马赛克、电影推荐系统、地震预测、人工智能项目等阶段项目。
第四阶段高级进阶。这是Python高级知识点,你需要学习项目开发流程、部署、高并发、性能调优、Go语言基础、区块链入门等内容。
学习目标:可以掌握自动化运维与区块链开发技术,可以完成自动化运维项目、区块链等项目。
按照上面的Python学习路线图学习完后,你基本上就可以成为一名合格的Python开发工程师。当然,想要快速成为企业竞聘的精英人才,你需要有好的老师指导,还要有较多的项目积累实战经验。
自学本身难度较高,一步一步学下来肯定全面且扎实,如果自己有针对性的想学哪一部分,可以直接跳过暂时不需要的针对性的学习自己需要的模块,可以多看一些不同的视频学习。系统学习一般在5-6个月。
2. 如何系统地自学 Python
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。
Python 的设计哲学之一就是简单易学,体现在两个方面:
语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。
切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
废话不多说,学会一门语言的捷径只有一个: Getting Started
¶ 起步阶段
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。
硬知识
“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 Java 程序员去学习 Python,他可以很快的将 Java 中的学到的面向对象的知识 map 到 Python 中来,因此能够快速掌握 Python 中面向对象的特性。
如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。
下面列出了一些适合初学者入门的教学材料:
廖雪峰的 Python 教程 Python 中文教程的翘楚,专为刚刚步入程序世界的小白打造。
笨方法学 Python 这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,非常适合快速起步。
The Hitchhiker’s Guide to Python! 这本指南着重于 Python 的最佳实践,不管你是 Python 专家还是新手,都能获得极大的帮助。
Python 的哲学:
学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。
软知识
“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。
对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一会儿看 2.7 一会儿又转到 3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django 什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。
很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。
还不如告诉初学者,学习本来就是个需要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。
选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。
自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用 Promise...
更重要的是,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。
技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?
因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。
起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。
¶ 发展阶段
完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。
没错,你的怀疑是非常正确的。要让 Python 发挥出它的价值,当然不能停留在语法层面。
发展阶段的核心任务,就是“跳出 Python,拥抱世界”。
在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。
拿爬虫举例,如果你对计算机网络,HTTP 协议,HTML,文本编码,JSON 一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。
在这个阶段,不可避免要接触大量类库,阅读大量书籍的。
类库方面
“Awesome Python 项目”:vinta/awesome-python · GitHub
这里列出了你在尝试解决各种实际问题时,Python 社区已有的工具型类库,如下图所示:
vinta/awesome-python
你可以按照实际需求,寻找你需要的类库。
至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。
书籍方面
这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:
科学和数据分析:
❖“集体智慧编程”:集体智慧编程 (豆瓣)
❖“数学之美”:数学之美 (豆瓣)
❖“统计学习方法”:统计学习方法 (豆瓣)
❖“Pattern Recognition And Machine Learning”:Pattern Recognition And Machine Learning (豆瓣)
❖“数据科学实战”:数据科学实战 (豆瓣)
❖“数据检索导论”:信息检索导论 (豆瓣)
爬虫:
❖“HTTP 权威指南”:HTTP权威指南 (豆瓣)
Web 网站:
❖“HTML & CSS 设计与构建网站”:HTML & CSS设计与构建网站 (豆瓣)
...
列到这里已经不需要继续了。
聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。
事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。
¶ 深入阶段
这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。
可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。
这里推荐一本书:
“Python 源码剖析”:Python源码剖析 (豆瓣)
这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。
另外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。
这里推荐一门公开课
“编程范式”:斯坦福大学公开课:编程范式
讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。
值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。
Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。
¶ 最后的话
每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人!
希望想学 Python 想学编程的同学,不要犹豫了,看完这篇文章,
Just Getting Started !!!
3. 如何学习Python
1、Python 介绍
学习一门新的语言之前,首先简单了解下这门语言的背景。Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于 1989 年发明,第一个公开发行版发行于 1991 年。Python 在设计上坚持了清晰划一的风格,这使得 Python 成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。Python 具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
2、Python 技术浪潮
IT行业热门技术,更新换代非常的快,技术的浪潮一波接着一波,最初的浪潮无疑是桌面时代,使用 C# 搭建桌面应用开始崭露头角,MFC 还是计算机科学专业必学会的东西。接着就是以网站搭建为应用的背景,PHP,Ruby 等语言为主的。再到近几年非常火热的以移动开发为应用背景,Java(Android 开发)或者 OC(iOS 开发)语言为主。很明显如今的浪潮就是以大数据和机器学习为应用背景,Python 语言为主。站在风尖浪口,猪都可以飞的起来。抓住这波技术浪潮,对于从事 IT 行业的人员来说有莫大的帮助。
3、Python 学习
学习一项新的技术,起步时最重要的是什么?就是快速入门。学习任何一个学科的知识时,都有一个非常重要的概念:最少必要知识。当需要获得某项技能的时候,一定要想办法在最短的时间里弄清楚都有哪些最少必要知识,然后迅速掌握它们。
对于快速入门 python 来说最少必要知识,有以下几点。
(1) Python 基础语法
找一本浅显易懂,例子比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。推荐去看《简明python教程》,非常好的一本 Python 入门书籍。
(2)Python 实际项目
等你对 Python 的语法有了初步的认识,就可以去找些 Python 实际项目来练习。对于任何计算机编程语言来说,以实际项目为出发点,来学习新的技术,是非常高效的学习方式。在练习的过程中你会遇到各种各样的问题:基础的语法问题(关键字不懂的拼写),代码毫无逻辑,自己的思路无法用代码表达出来等等。这时候针对出现的问题,找到对应解决办法,比如,你可以重新查看书本上的知识(关于基础语法问题),可以通过谷歌搜索碰到的编译错误(编辑器提示的错误),学习模仿别人已有的代码(写不出代码)等等。已实际项目来驱动学习,会让你成长非常的快。Python 实际项目网上非常的多,大家可以自己去搜索下。合理利用网络资源,不要意味的只做伸手党。
(3) Python 的学习规划
当你把上面两点做好以后,你就已经入门了 Python,接下来就是规划好自己的以后的学习规划。能找到一个已经会 Python 的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问,没人会愿意回答显而易见的问题。当然如果你身边没有人会 Python,也可以在网上搜索相应的资料。
Python 可以做的事非常的多,比如:Python 可以做日常任务,比如自动备份你的MP3;可以做网站,很多着名的网站像知乎、YouTube 就是 Python 写的;可以做网络游戏的后台,很多在线游戏的后台都是 Python 开发的。每个人都有自己感兴趣的方向,有的对网站开发比较感兴趣,有的对数据处理感兴趣,有的对后台感兴趣。所以你们可以根据自己感兴趣的方向,网上搜索相关资料,加以深入的学习,规划好自己未来的方向。只要坚持,你就能精通 Python,成为未来抢手的人才。
4. 深入浅出丨带你看懂数据可视化“美”的历程
深入浅出丨带你看懂数据可视化“美”的历程
古人说:“人不可貌相”,但从古至今,人类却是一群感性动物,容易受到外在表象影响,先感性才理性。
《韩非子》里提到,春秋末期鲁国人澹台灭明,天生异像,“额低口窄,鼻梁低矮,不具大器形貌”,拜孔子为师,孔子没有拒绝,但对他不上心,爱答不理,让他坐冷板凳。于是,他毅然决然地离开孔子,自学成才,独辟蹊径,游历讲学,积极传播儒家学说,并培养出很多人才,深受老百姓爱戴。孔子听闻他的事迹之后,幡然醒悟。
在今天,好看这件事也一样是很重要的。“颜值即正义”,长得好看的人,似乎更容易受到欢迎和优待。
但古人也说过:“相由心生”,从一个人的外表和精神状态可以大概知道这个人的内在状况,相反,一个人的内心思想状态,也会投射到形象外表。
因此,我们要注重自身内在涵养的健康发展,也要学会对外在美的表达与审视。
同样地,好的设计也应该是兼具内容与形式。
信息时代让人们的生活节奏加快,人们每一天都变得匆忙,时间被碎片化,甚至没有多少时间完整看完一段文字。文字的力量是有限的。只有借助可视化,信息才能高效地传播。
数据可视化是数据领域一个重要的分支,目的是“让数据说话”,展现数据之美。好的图表会说话,好的图表可以抓住用户的心。
一、历史篇:人类对世界的认知与表达从图画开始
研究发现,人脑处理图片信息是同步进行的,而处理文字信息则是一步一步循序渐进的,而且一篇文字下来,大部分人只记住了其中的20%;人在看报纸时,99%的文字信息会自动被过滤掉,脑子里只残留了可怜的1%;人脑处理图片的速度是处理文字的6000倍。也就是说,如果一篇6000字的文章需要10分钟看完,而压缩成一张图片则只需要10/6000分钟的时间。
图片可以表达的内容要比文字更丰富,同时也可以给人留下很大的想象空间 ,可以体现真实性(有图有真相),可以让人赏心悦目。
其实,在远古时期,我们遥远的祖先——智人就已经学会画画,基于自己对周边生活环境的认知,将人、鸟、兽、草、木等事物以及狩猎、耕种、出行、征战、搏斗、祭祀甚至男女交媾等日常活动刻画在岩石上、石壁上、洞穴里......到目前为止,欧洲、亚洲、美洲、大洋洲的70多个国家150多个地区发现岩画遗址,而仅非洲和澳洲少数族群目前还存有岩画制作的传统,例如着名的岩画遗址拉斯科洞窟壁画、阿尔塔米拉洞窟壁画、大麦地岩画、拉文特岩画、平图拉斯河手洞壁画、非洲大象岩刻、将军崖岩画等。
岩画学家埃马努埃尔·阿纳蒂在《世界岩画:原初语言》一书中提到:随着智人技术水平的提高、抽象和感知能力的增强,促使了复杂语言和艺术的产生,而岩画正是这种语言的一种记录形式;目前所知的70%岩画都是狩猎采集社会的作品,剩余30%是游牧和农耕时期的作品,在这些岩画的结构中存在着共同的记忆和普遍性的认知模式。岩画是象形文字,是无文字时代的写作,是人类隐没记忆的见证。
可见,人类对世界的认知与表达是从图画开始的。
图1. 远古时代的岩画
人类造出文字之前,还经历过“结绳记事”、“图画记事”等阶段。
但随着社会的发展,人类发生了“农业革命”,不再单纯依靠狩猎为生,制造和使用工具更加娴熟,剩余产品逐渐增加,社会组织逐步成熟。这时,社会组织不断产生大量的信息,除法令条纹外,还必须记录各种交易、税收、商品库存、节假日以及打胜仗的日期等。在此之前,人类虽然可以利用图画记事,但更多的还是用自己的大脑记录信息。随着信息的大量产生,容易产生记忆过载,于是就有了文字。
象形文字是由原始的图画发展而来的。由于社会的发展,加上图画效率低,难以满足社会化需求,于是人们逐渐从图画中抽离出一个个元素,形成象形文字。象形文字是一种最原始的造字方法,纯粹利用图形来作文字使用,而这些文字又与所代表的东西在形状上很相像,图画性质减弱,象征性质增强。苏美尔楔形文字、甲骨文、古埃及象形文字、玛雅文字都是独立地从原始社会最简单的图画和花纹产生出来的。
但象形文字也有很大的局限性,因为有些实体事物和抽象事物是画不出来的,而且写起来很慢又难读懂。
图2. 世界四大古文字
随着社会的进一步发展,文字也得到了很大的发展,在象形文字的基础上逐步分化出“表音”和“表意”两种文字。文字是用来记录和传播语言的,而记录和传播只有两种途径,或“表音”,或“表意”。就汉字来说,其发展脉络大致是:结绳记事—图画文字—象形文字—形意文字—意音文字。
社会的发展,推动了文字的发展,使得人们在对事物的表达上可以更加丰富多样,可以指事、象形、形声、会意、转注、假借。人们对世界的认知和表达在广度和深度上也都有了很大的延伸。反过来,由于更多样化的文字,人们能够更加准确、生动、深刻、灵活地记录下所见所闻和所思所想,加快了知识的传播与传承,推动了社会的大发展。
文字即使再丰富,也有难以突破的局限性。文字需要理解,不能一目了然,对抽象事物及个体的表达,还不够形象、到位。因此,在出现文字之后的时代,许多文献就以图文结合的形式流传下来。例如,在1912年发现的伏尼契手稿中,字母和语言至今无人破解,但其中的植物、天体出浴美女等许多图片,甚至出现了构造精致的精美图案,一目了然,让人惊叹。
图3. 伏尼契手稿
二、发展篇:进入了“百花齐放、百家争鸣”的时代
计算机出现之前,人们已经能够灵活地运用柱形图、线图、饼图等基本图表来展示数据,而且也衍生了很多新型、创意的数据图表。
大家应该都知道南丁格尔(国际上以她的生日命名了护士节),但很多人应该不知道南丁格尔玫瑰图(下图)就是她创造的。在克里米亚战争期间,南丁格尔通过搜集数据,发现很多死亡原因并非是“战死沙场”,而是在战场外感染疾病,或是在战场上受伤,却没有得到适当的护理而致死。为了解释这个原因,降低英国士兵死亡率,她画了这个着名的图表,于1858年递交到维多利亚女王手中。(这么漂亮的图表,想必女王一定很受感动)
图4. 南丁格尔玫瑰图
世界着名的绘图大师米纳德,开创了许多重要的主题绘图技巧,改良了其他技术。他是首个把饼图和地图结合在一起的人,并将流线放入地图中。以下图表是米纳德最广为人知的作品,被EdwardTufte认为是史上最杰出的统计图。它描绘了拿破仑的军队自离开波兰-俄罗斯边界后军力损失的状况,在一张图中通过两个维度呈现了六种维度信息:拿破仑军队人数、行军距离、温度、经纬度、移动方向以及时间-地域关系。
图5. 拿破仑行军图
计算机出现后,特别是互联网的兴起,人类社会以“摩尔定律”的速度,进入一个全新的时代,科学技术也得到了前所未有的革新与发展,同时也给人们带来了很多新思维。
技术的进步,让我们能够采集到比以前多得多的信息,数据规模不断成指数量级的增长,数据的内容和类型也比以前要丰富得多,改变了人们分析和研究世界的方式,也给人们提供了新的可视化素材,推动了数据可视化领域的发展。
与以前相比,数据可视化领域发生了很多的变化,得到了很大的发展。
1. 可视化的表现形式和场景更丰富
在当今信息时代,信息出现了“泛滥”与“过载”,人们每天都受到各种信息的“轰炸”。当我们打开网页或手机APP时,首先进入我们视野的就是各种弹出的广告信息。这些信息从内容到形式,都经过了精心设计。我们走在大街上,映入我们眼球的则是满大街的广告海报,还时常有人站在街边向路人派发传单。我们不仅仅只从书上看到了可视化的图表,还从海报、信息图、PPT、数据产品、大屏等获取到了大量的可视化信息。
图6. 可视化的表现形式
2. 可视化展现方式更多样和灵活
数据图表是最常用的可视化元素。除柱形图、条形图、饼图、环形图、线图、散点图、面积图、雷达图、K线图、地图等基本图表外,现在也出现了更多新式的图表,如山峰图、雷达图、气泡图、热力图、漏斗图、树图、箱形图、瀑布图、河流图、词云图、仪表盘、南丁格尔玫瑰图、旭日图、和弦图、桑基图、3D图,等等。另外,智慧的人们也常常创意性地将各种图表混搭,例如下图,地图和饼图、散点图、柱形图等搭配使用。
图7. 各种图表的混搭
除图表外,对图片和图标的灵活运用,使得可视化更加美观、形象、贴切。
图9. 图标的灵活运用
3. 从静态到动态
由于技术的发展,实时数据采集、实时数据传输以及实时数据计算得以实现,人们终于得以欣赏到数据的灵动之美。以前人们只能看到事后数据形成的分析结果,看到的是数据的过去式,领略的是数据的静态之美。而现在,通过实时计算及数据可视化,人们可以知道“当前时刻发生了什么”,看到了数据的变化,看到了数据的动态之美。
4. 设计上更注重用户体验
由“信息泛滥”引起“信息过载”,从而导致“信息焦虑”。无论是风格、元素、配色、文字、交互上还是细节上,人们的可视化作品都越来越注重用户的视觉体验,希望能让用户一目了然,不多花一点儿时间去理解。在设计风格上,从3D拟物化到简洁扁平化再到拟物扁平化的发展变化,也在不断地为用户“做减法”。
三、原则篇:关于设计的四大原则
“别忘了,你是为读者进行可视化设计。”
——《数据之美:一本书学会可视化设计》
所有的设计细节,都必须经过精心构思,都必须站在用户角度来思考。
颜值高或者打扮好看的人,总能牢牢地吸引别人的目光,相反,衣着邋遢不修边幅的人,却往往是别人瞅一眼就嫌弃。那些聪明的人,必然深谙这样的秘诀:好看的PPT报告,总能在第一时间吸引受众,再加上生动的演讲,就会收到很多好评;广告牌做得越好,就越吸引路人的注意力,越能让路人记住,广告效果也就越好。
当你看到别人的可视化作品时,你是否总觉得不好,但怎么也说不出到底哪些地方不好?如果你熟悉以下基本原则,就算不是一个专业的设计人员,你也可以快速看出哪里出了问题并提出非常中肯的建议。如果你还能熟练运用这些原则,那你的可视化作品将焕然一新,更加专业、好看、有趣,也将收获更多读者的赞赏。
亲密性(分组)
在生活中,几乎每件事都有逻辑,人们也喜欢遵循一定的逻辑去理解世间之事,例如时间先后、空间、因果、总-分-总等逻辑结构。
在做可视化设计的时候,我们所要表达的内容一定不能是一些无序呈现,这样会给读者造成理解上的混乱。我们的可视化作品应当能够遵循多数读者所能理解的思维逻辑,将内容分成几部分按顺序一步一步地表达出来。
相同部分的内容,彼此相关,应当靠近,放在一起。这样阅读起来才能被理解成为同一单元的内容,而不是多个孤立的不相关的内容。不同部分的内容,应当明显地区隔开来,例如上下部分内容之间用一空行隔开或者间距放大。这样有助于组织信息,减少混乱,为读者提供清晰的结构。
图10. 亲密性原则
对齐
在版式布局上,任何元素的摆放,都可能会影响甚至主导用户的视觉流程。因此,任何元素都不能随意摆放,否则会造成混乱,而混乱会令人不适。对齐,使每个元素都与其它元素建立起某种视觉联系。对齐,也让可视化作品更加清晰、精巧、清爽。
对齐,不仅包括左对齐、右对齐、顶端对齐、低端对齐,还包括水平居中、垂直居中、横向分布、纵向分布,等。
图11. 对齐原则
重复/统一
我们都有“先入为主”的“陋习”,当看到与之前不和谐不一致的东西,常感突兀,甚至本能抗拒。因此,在可视化作品中反复使用一些视觉要素,建立上下文之间的联系,增加条理性,保持视觉上的统一。
任何视觉元素都可以在同一作品中重复使用,例如颜色、形状、材质、空间关系、线宽、字体、大小和图片,等等。
图12. 重复原则
对比/强调
在做可视化设计时,我们的初心是以图文的形式把所要表达的信息清晰的传递给用户,让用户一目了然,尽量不需要太多思考和理解。为了达到这个目的,我们需要强调重点,弱化次要,避免作品中所有的元素看起来重要程度都是一样的。如果所有的东西都同等重要,那就相当于所有的东西都不重要。
图13. 强调重点,弱化必要
如果你想突出某些信息要点,那就让对应的元素(字体、颜色、大小、线宽、形状、空间等)与其它元素不相同,让它们截然不同,让用户首先能够关注到它们。
图14. 对比原则
表达,力求准确、到位、简洁、易懂
当用户看到我们的可视化作品时,我们最好要保证所表达的信息能被用户正确理解。除使用上面几个原则外,我们还要附加一些辅助信息,例如文字、箭头等。在可视化作品中,文字必不可少,但篇幅要加以控制。
文字的表达,要准确、到位、简洁、易懂,要能引导用户正确地理解图表的意思,要能不引起任何歧义。
图15. 表达,要准确、到位
四、流程篇:要有数据可视化的正确姿势
没有什么比亲手创造美这件事更给人带来成就感了。
当我们满怀激动地开始数据可视化时,请不要马上钻入某个细节里,不要急着考虑用什么酷炫的图表来展现,也不要纠结于用什么颜色、什么字体。我们要有数据可视化的正确打开姿势。
不同形式的数据可视化流程有所不同,这里主要讲重要且相通的部分。
(一) 了解你的需求
关于需求,在实现之前,一定要听清楚做什么,想清楚怎么做,说清楚怎么做。
了解与分析数据可视化需求,主要围绕以下几点来展开:
1. 看什么,即哪些内容需要可视化。
很少需求方能够准确、全面地说出他们真正想要什么。他们只能描述出大概的样子,因此需要不断引导他们以明确真正详细的需求。
· 可视化的目的是什么,用户是谁,在哪里看,什么情况下看,多久看一次;
· 了解数据,看看有哪些指标,哪些指标可以直接取,哪些需要复杂计算,哪些可以实时,哪些只能离线;
· 哪些指标必须展现,哪些指标不展现,哪些指标可展现可不展现;
· 展现的维度有哪些,按时间、部门、地域、指标,看实时数据还是历史数据;
· 通过可视化,期望从中知道哪些信息,等等。
2. 谁看,即用户是谁。
如果面对的是求真务实的老板,那可能需要侧重于内容,追求逻辑的合理性和数据的准确性;如果是来访参观的贵客,那可能为了展示公司实力与形象而追求高大上的图表设计;如果是不懂技术的业务人员,在可视化时可能需要避免过于技术性。
3. 在哪里看,即有哪些可视化形式。
一次性的工作汇报,可使用PPT,如果老板嫌弃做PPT太慢,可以直接用Excel,或者其它工具,如脑图;如果为很多用户提供周期性计算的指标数据,且满足不同条件下的查看,那适合做一款数据产品或者可视化报表;向来访的贵客介绍公司情况时,如果想给客人们提供一种赏心悦目的视觉享受,用大屏可视化数据再合适不过了;如果想给公司各部门同事普及知识、介绍成果、通知活动等,做一张可视化信息图,并在线发布,图文结合,有趣生动,既吸引更多读者关注,提升阅读体验。
4. 什么情况下看。
“第一印象”肯定是重要的。用户“第一眼”感觉不好,当然就没有了然后,就不会有“第二眼”、“第三眼”,也就不会再往下看了。所以,要带给用户“第一眼”足够良好的视觉体验,就要多想想用户会在什么场景下去看你的可视化作品。
例如,打开手机,多数情形下,用户只会根据标题有选择地浏览少量文章,因此,取一个生动、有趣、亮眼的标题,比普通标题更有视觉冲击力,会让你的文章从众多内容中脱颖而出,赢得更多用户点击阅读。
图16. 取一个有吸引力的标题
例如,在企业内部(特别是人多的公司),海报、信息图形式的内容,每天都大量地以邮件地方式群发给各部门人员,或活动通知、或展现成果、或宣传典型,等等。每个员工都“信息过载”,只能阅读少量的信息。
除标题要吸引人外,还需要注意用户打开邮件的实际场景。不少用户打开这种群发邮件时,常常是下面的情况,一堆的收件人,一堆的抄送人,这已经占据了有限电脑屏幕的一部分,剩下的部分就是点击某个邮件时出现的正文内容的部分。因此,在这一区域完整显示出标题(以及内容摘要),才能吸引用户往下看。
图17. 多想想具体的场景
(二)可视化设计
可视化设计是最重要的环节。只有做好这一环节,后面的事情才会变得简单顺畅。
1. 梳逻辑
我们在阅读时,只要遇到稍微难懂的知识,基本上会本能地第一时间选择退缩,不再看下去。之所以觉得难懂,最主要是因为逻辑不清晰给我们带来理解上的困扰。逻辑就像一棵树的树干,如果我们只见树叶不见树干,就会迷失方向。因此,在可视化设计前,一定要站在用户的角度,梳理出清晰的逻辑结构。这一步,想清楚怎么做,很重要,多花点时间也没关系。
对于数据可视化来说,逻辑就是确定各部分的核心内容,以及内容之间的先后次序和关联关系,即讲什么不讲什么,先讲什么后讲什么。
把逻辑设计得简单一些,清晰一些,用户就能越快明白你的“良苦用心”。
2. 定风格
风格营造一种氛围,驱动用户沉浸式阅读。不同的风格,适合不同的用户不同的场景,例如科技、学院、活泼、严肃、可爱,等等。
3. 排版式
版式设计就是关于如何处理信息重点,因为在任何设计中,最重要的信息需要首先被注意到,然后是次要信息。
好的版式就像导盲犬,合理地对内容进行布局,适当地安排版式中的视觉流程,引导用户第一时间看到最需要被关注的部分,暗示用户“先看什么,后看什么”。
一般来说,可视化作品一般包括标题、正文、图表、说明文字等要素。版式就是基于上述提到的几个原则,确定元素之间的层次结构,合理摆放这几个要素。
4. 选图表
不是越酷炫的图表就越适合。这首先要看展现什么数据。某些图表只适合展现相应格式的数据。其次,也需要对展现数据的图表进行个性化定制,包括样式、风格、颜色、字体,使之契合上下文语境,也让图表更有温度。
不要将就而选择默认设置的图表,不要做那个“Mr.差不多”或“Ms.还行”。如果将默认设置的图表放在可视化作品中,总是显得那么突兀和不协调。另外,对默认设置的弃用,可以强迫自己不断精进,不断提升可视化的能力。
5. 调细节
对单个部分的可视化设计,并不能完全保证整体上的和谐一致。因此,回到整体,根据前面提到的几个原则,发现细节问题,对某些细节进行调整,使之整体上保持一致。例如,各部分视觉元素之间保持对齐,如标题、正文、图表等;在配色、字体或其它细节上,各部分要尽量做到统一;各部分之间要有明显的区隔,等等。
(三)指标计算
巧妇难为五米之炊。有数据,才能谈数据可视化。数据的获取、整合、计算,会占用大量的时间。这一部分工作是相对独立的。
但需要注意的是,模拟数据和真实数据是有区别的。根据模拟数据设计的图表,一定要用真实数据展现与验证,验证图表与真实数据的契合程度。例如下图,模拟数据展示的图表中各部门之间存在明显的差异,但改为用真实数据展示时,却“看起来感觉都一样”,这时候就需要调整图表的设置,凸显视觉上的差异。
图18. 用真实数据验证可视化的效果
指标的计算过程,这里略去不讲。
(四)前端开发
数据产品、大屏的可视化实现,还需要前端开发。
理论上来讲,只要设计出的图表,就一定能在前端实现。但这个可能会受到前端开发人员的技术水平和展现工具的限制。所以,可视化设计有时候需要寻求一种关于设计与实现之间的平衡。
可视化设计人员最好事先有所评估,采用复杂图表设计之前最好与开发人员沟通探讨实现的可行性。
五、工具篇:你会用Excel设计图表吗?
Excel是最常用、最基本、最灵活且最应该掌握的图表制作工具。 可以说,大多数图表样式都可以用Excel画出来。如果你认为用Excel画不出来某种样式的图表,有可能是你还未掌握Excel的高阶技巧。
Excel展现的图表是静态的,且支持的数据量比较有限。所以,如果是企业级的动态数据展现,还需要借助专业的大数据可视化工具。
专业可视化工具有很多,大致可分为三类:企业级专业可视化工具、轻量级在线可视化工具、编程式图表工具。
企业级专业可视化工具
ECharts 是国内使用率非常高的开源图表工具,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的 Canvas 类库 ZRender,提供直观、生动、可交互、可高度个性化定制的数据可视化图表。ECharts 3 中更是加入了更多丰富的交互功能以及更多的可视化效果,并且对移动端做了深度的优化。
D3.js 是最好的开源数据可视化工具库。D3.js运行在JavaScript上,并使用HTML、CSS和SVG。 D3.js使用数据驱动的方式创建漂亮的网页。 D3.js可实现实时交互。这个JS库将数据以SVG和HTML5格式呈现,所以像IE7和8这样的旧式浏览器不能利用D3.js功能。
Tableau是一款企业级的大数据可视化工具。Tableau 可以让你轻松创建图形,表格和地图。 它不仅提供了PC桌面版,还提供了服务器解决方案,可以让您在线生成可视化报告。服务器解决方案可以提供了云托管服务。
轻量级在线可视化工具
BDP个人版,类似Tableau的在线免费的数据可视化分析工具,不需要破解、不需要下载安装,在线注册后就能一直使用,操作很简单,只需要拖拽。支持几十种图表类型,也支持制作数据地图(自带坐标纠偏)。除可视化之外,BDP还有数据整合、数据处理、数据分析等功能。
网络图说,基于ECharts,在线图表制作工具,采用Excel式的操作方式制作样式丰富的图表,图表自定义的选项很丰富,使数据呈现的方式更加美观个性,易分享传播。
文图主要用在你要出一份包含文字说明的报告时使用,提供几个确定好风格配色的主题供选择,让整个报告风格统一、简洁美观!文图能够良好地适配移动端。但文图的排版不是很好用。
创客贴,在线平面设计工具,简单,快速,轻松完成在线设计,据说是2016最好的在线设计网站。
编程式图表工具
对于掌握编程语言的程序员来说,设计新颖、令人惊艳的数据图表也可以通过代码来实现。
Python有很多具有画图功能的包,如matplotlib、Seaborn、ggplot、Bokeh、pygal、Plotly、Geoplotlib、Gleam、missingno、Leather,等等。
R语言提供了很多数据可视化工具包,例如ggplot2、ggthemes、ggmap、ggiraph、ggstance、GGally、gganimate、ggradar、ggTimeSeries、ggseas、lattice、rgl、ggvis、htmlwidgets、leaflet、dygraphs,等等。
类似提供强大绘图编程功能的语言还有PHP、HTML、JavaScript、CSS等。
六、技巧篇:刻意练习是提升可视化技能的唯一途径
不断练习,不断精进
提升数据可视化技能的唯一途径就是在理解可视化设计原则和方法论的基础上,不断练习,不断精进。
除此之外,还要有点完美主义。
技巧在于平时的积累。多观察,生活中看到好的设计,多想想为什么人家设计那么好,让你忍不住多看几眼。看到不好的设计,多想想到底哪里不好。看到好看的图表,看到别人介绍的小技巧,动手做一做。
技巧太多,这里不做展开细讲。
“去设施倾向”
“这是章北海看到的另一个以前很少有人想象到的现代技术特色——去设施倾向。这种倾向在地球上还只是初露端倪,但‘去设施化’已成为比地球世界更先进的舰队世界的基本结构。这个世界到处都是简洁空荡的,几乎见不到任何设施,只有在需要时,设施才会出现,而且是在任何需要的位置出现。世界在被技术复杂化后,正在重新变得简洁起来,技术被深深地隐藏在现实的后面。”
——《三体》
科幻小说《三体》里面的这段话,给了我们提示。当我们做分析和可视化数据时,如果不用选项框和菜单栏时,应该隐藏起来,用到时才打开。另外,也尽量让所使用的软件最大化。这样可以让内容信息展现在最大的视野区域内,这样有助于让我们从中获取更全面的信息,指导我们下一步做正确的决策。
图19. 限的视野区域,信息最大化
颜色不宜过多,配色要合理
我们在可视化设计时,最好不要使用超过三种以上的主色调。颜色过多,无形中会分散用户的注意力,使得用户无法聚焦。
颜色的搭配要合理。大自然是最好的色彩家,可以借鉴大自然的色彩搭配。另外,如果你第一眼看到别人的设计,感觉很舒服,赏心悦目,那也可以借鉴作品中的色彩搭配。相信你的直觉,至少你的身体不会欺骗你。
图20.颜色不宜过多,配色要合理
图21.从生活和自然中学习配色技巧
5. 0基础自学python,有入门书籍推荐下么
AlphaGo 都在使用的 Python 语言,是最接近 AI 的编程语言。
教育部考试中心近日发布了“关于全国计算机等级(NCRE)体系调整”的通知,决定自2018年3月起,在全国计算机二级考试中加入了“Python语言程序设计”科目。
9个月前,浙江省信息技术课程改革方案已经出台,Python确定进入浙江省信息技术教材,从2018年起浙江省信息技术教材编程语言将会从vb更换为Python。
小学生都开始学Python了,天呐撸,学习Python看完这些准没错。
安利一波书单
Python入门
Python数据分析》
作者: 【印尼】Ivan Idris
Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式。Python已经成为数据科学家进行数据分析、可视化以及机器学习的一种理想编程语言,它能帮助你快速提升工作效率。
本书将会带领新手熟悉Python数据分析相关领域的方方面面,从数据检索、清洗、操作、可视化、存储到高级分析和建模。同时,本书着重讲解一系列开源的Python模块,诸如NumPy、SciPy、matplotlib、pandas、IPython、 Cython、scikit-learn和NLTK等。此外,本书还介绍了数据可视化、信号处理、时间序列分析、数据库、预测性分析和机器学习等主题。通过阅读本书,你将华丽变身数据分析高手。
6. 学MircroPython要多久
没有MircroPython的说法,只有microscope的说法,意思是显微镜。
显微镜是由一个透镜或几个透镜的组合构成的一种光学仪器,是人类进入原子时代的标志。主要用于放大微小物体成为人的肉眼所能看到的仪器。显微镜分光学显微镜和电子显微镜:光学显微镜是在1590年由荷兰的詹森父子所首创。现在的光学显微镜可把物体放大1600倍,分辨的最小极限达波长的1/2,国内显微镜机械筒长度一般是160毫米,其中对显微镜研制,微生物学有巨大贡献的人为列文虎克、荷兰籍。
光学显微镜由目镜,物镜,准焦螺旋(粗准焦螺旋和细准焦螺旋),压片夹,通光孔,遮光器,转换器,反光镜,载物台,镜臂,镜筒,镜座,聚光器,光阑组成。
通常皆由光学部分、照明部分和机械部分组成。无疑光学部分是最为关键的,它由目镜和物镜组成。早于1590年,荷兰和意大利的眼镜制造者已经造出类似显微镜的放大仪器。光学显微镜的种类很多,主要有明视野显微镜(普通光学显微镜)、暗视野显微镜、荧光显微镜、相差显微镜、激光扫描共聚焦显微镜、偏光显微镜、微分干涉差显微镜、倒置显微镜。
光学系统
显微镜的光学系统主要包括物镜、目镜、反光镜和聚光器四个部件。广义的说也包括照明光源、滤光器、盖玻片和载玻片等。
(一)物镜
物镜是决定显微镜性能的最重要的凸透镜,安装在物镜转换器上,接近被观察的物体,故叫做物镜或接物镜。
物镜的放大倍数与其长度成正比。物镜放大倍数越大,物镜越长。
1.物镜的分类
物镜根据使用条件的不同可分为干镜和浸液镜;其中浸液镜又可分为水镜和油镜(常用放大倍数为90—100倍)。
根据放大倍数的不同可分为 低倍物镜(10倍以下)、中倍物镜(20倍左右)高倍物镜(40—65倍)。
根据像差矫正情况,分为消色差物镜(常用,能矫正光谱中两种色光的色差的物镜)和复色差物镜(能矫正光谱中三种色光的色差的物镜,价格贵,使用少)。
显微镜放大原理光路图
显微镜由两个会聚透镜组成,光路图如图所示。物体AB经物镜成放大倒立的实像A1B1,A1B1位于目镜的物方焦距的内侧,经目镜后成放大的虚像A2B2于明视距离处。
历史上显微镜的发明和显微镜的每一次创新都给人类的认知带来了飞跃式的发展;给人类的生活带来了空前的拓展。在提倡科技创新的今天,显微镜的使用已经成为中学生的一项基本技能,掌握结构,科学使用,良好维护,使之成为广大青少年探索未来世界的一个窗口。
希望我能帮助你解疑释惑。
7. Python:这有可能是最详细的PIL库基本概念文章了
PIL有如下几个模块:Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance模块、ImageFile模块、ImageFileIO模块、ImageFilter模块、ImageFont模块、ImageGrab模块、ImageOps模块、ImagePath模块、ImageSequence模块、ImageStat模块、ImageTk模块、ImageWin模块、PSDraw模块
啊啊啊啊怎么这么多模块啊~~~!!!!
别担心我为你一一讲解
Image模块提供了一个相同名称的类,即image类,用于表示PIL图像。
Image模块是PIL中最重要的模块 ,比如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等。
Image模块的使用如下:
ImageChops模块包含一些算术图形操作,这些操作可用于诸多目的,比如图像特效,图像组合,算法绘图等等,通道操作只用于8位图像。
ImageChops模块的使用如下:
由于图像im_p是im的复制过来的,所以它们的差为0,图像im_diff显示时为黑图。
ImageCrackCode模块允许用户检测和测量图像的各种特性。 这个模块只存在于PIL Plus包中。
因为我目前安装的PIL中没有包含这个模块。所以就不详细介绍了
ImageDraw模块为image对象提供了基本的图形处理功能。 例如,它可以创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形。
ImageDraw模块的使用如下:
在del draw前后显示出来的图像im是完全一样的,都是在原有图像上画了两条对角线。
原谅我的报错
ImageEnhance模块包括一些用于图像增强的类。它们分别为 Color类、Brightness类、Contrast类和Sharpness类。
ImageEnhance模块的使用如下:
图像im0的亮度为图像im的一半。
ImageFile模块为图像打开和保存功能提供了相关支持功能。另外,它提供了一个Parser类,这个类可以一块一块地对一张图像进行解码(例如,网络联接中接收一张图像)。这个类的接口与标准的sgmllib和xmllib模块的接口一样。
ImageFile模块的使用如下:
因为所打开图像大小大于1024个byte,所以报错:图像不完整。
所以大家想看的可以自行去找一个小一点的图看一下
ImageFileIO模块用于从一个socket或者其他流设备中读取一张图像。 不赞成使用这个模块。 在新的code中将使用ImageFile模块的Parser类来代替它。
ImageFilter模块包括各种滤波器的预定义集合,与Image类的filter方法一起使用。该模块包含这些图像增强的滤器:BLUR,CONTOUR,DETAIL,EDGE_ENHANCE,EDGE_ENHANCE_MORE,EMBOSS,FIND_EDGES,SMOOTH,SMOOTH_MORE和SHARPEN。
ImageFilter模块的使用如下:
ImageFont模块定义了一个同名的类,即ImageFont类。这个类的实例中存储着bitmap字体,需要与ImageDraw类的text方法一起使用。
PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(Xwindow字体格式)转换为这种格式。
PIL Plus包中才会支持矢量字体。
ImageGrab模块用于将屏幕上的内容拷贝到一个PIL图像内存中。 当前的版本只在windows操作系统上可以工作。
ImageGrab模块的使用如下:
图像im显示出笔记本当前的窗口内容,就是类似于截图的工具
ImageOps模块包括一些“ready-made”图像处理操作。 它可以完成直方图均衡、裁剪、量化、镜像等操作 。大多数操作只工作在L和RGB图像上。
ImageOps模块的使用如下:
图像im_flip为图像im垂直方向的镜像。
ImagePath模块用于存储和操作二维向量数据。Path对象将被传递到ImageDraw模块的方法中。
ImagePath模块的使用如下:
ImageSequence模块包括一个wrapper类,它为图像序列中每一帧提供了迭代器。
ImageSequence模块的使用如下:
后面两次show()函数调用,分别显示第1张和第11张图像。
ImageStat模块计算一张图像或者一张图像的一个区域的全局统计值。
ImageStat模块的使用如下:
ImageTk模块用于创建和修改BitmapImage和PhotoImage对象中的Tkinter。
ImageTk模块的使用如下:
这个是我一直不太懂的有没有大佬能帮我解决一下在线等~急!
PSDraw模块为Postscript打印机提供基本的打印支持。用户可以通过这个模块打印字体,图形和图像。
PIL中所涉及的基本概念有如下几个: 通道(bands)、模式(mode)、尺寸(size)、坐标系统(coordinate system)、调色板(palette)、信息(info)和滤波器(filters)。
每张图片都是由一个或者多个数据通道构成。PIL允许在单张图片中合成相同维数和深度的多个通道。
以RGB图像为例,每张图片都是由三个数据通道构成,分别为R、G和B通道。而对于灰度图像,则只有一个通道。
对于一张图片的通道数量和名称,可以通过getbands()方法来获取。getbands()方法是Image模块的方法,它会返回一个字符串元组(tuple)。该元组将包括每一个通道的名称。
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
getbands()方法的使用如下:
图像的模式定义了图像的类型和像素的位宽。当前支持如下模式:
1:1位像素,表示黑和白,但是存储的时候每个像素存储为8bit。
L:8位像素,表示黑和白。
P:8位像素,使用调色板映射到其他模式。
I:32位整型像素。
F:32位浮点型像素。
RGB:3x8位像素,为真彩色。
RGBA:4x8位像素,有透明通道的真彩色。
CMYK:4x8位像素,颜色分离。
YCbCr:3x8位像素,彩色视频格式。
PIL也支持一些特殊的模式,包括RGBX(有padding的真彩色)和RGBa(有自左乘alpha的真彩色)。
可以通过mode属性读取图像的模式。其返回值是包括上述模式的字符串。
mode 属性 的使用如下:
通过size属性可以获取图片的尺寸。这是一个二元组,包含水平和垂直方向上的像素数。
mode属性的使用如下:
PIL使用笛卡尔像素坐标系统,坐标(0,0)位于左上角。注意:坐标值表示像素的角;位于坐标(0,0)处的像素的中心实际上位于(0.5,0.5)。
坐标经常用于二元组(x,y)。长方形则表示为四元组,前面是左上角坐标。例如:一个覆盖800x600的像素图像的长方形表示为(0,0,800,600)。
调色板模式 ("P")使用一个颜色调色板为每个像素定义具体的颜色值
使用info属性可以为一张图片添加一些辅助信息。这个是字典对象。加载和保存图像文件时,多少信息需要处理取决于文件格式。
info属性的使用如下:
对于将多个输入像素映射为一个输出像素的几何操作,PIL提供了4个不同的采样滤波器:
NEAREST:最近滤波。 从输入图像中选取最近的像素作为输出像素。它忽略了所有其他的像素。
BILINEAR:双线性滤波。 在输入图像的2x2矩阵上进行线性插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。
BICUBIC:双立方滤波。 在输入图像的4x4矩阵上进行立方插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。
ANTIALIAS:平滑滤波。 这是PIL 1.1.3版本中新的滤波器。对所有可以影响输出像素的输入像素进行高质量的重采样滤波,以计算输出像素值。在当前的PIL版本中,这个滤波器只用于改变尺寸和缩略图方法。
注意:在当前的PIL版本中,ANTIALIAS滤波器是下采样 (例如,将一个大的图像转换为小图) 时唯一正确的滤波器。 BILIEAR和BICUBIC滤波器使用固定的输入模板 ,用于固定比例的几何变换和上采样是最好的。Image模块中的方法resize()和thumbnail()用到了滤波器。
resize()方法的定义为:resize(size, filter=None)=> image
resize()方法的使用如下:
对参数filter不赋值的话,resize()方法默认使用NEAREST滤波器。如果要使用其他滤波器可以通过下面的方法来实现:
thumbnail ()方法的定义为:im.thumbnail(size, filter=None)
thumbnail ()方法的使用如下:
这里需要说明的是,方法thumbnail()需要保持宽高比,对于size=(200,200)的输入参数,其最终的缩略图尺寸为(182, 200)。
对参数filter不赋值的话,方法thumbnail()默认使用NEAREST滤波器。如果要使用其他滤波器可以通过下面的方法来实现:
8. 如何自学Python
分享Python学习路线。
第一阶段Python基础与Linux数据库。这是Python的入门阶段,也是帮助零基础学员打好基础的重要阶段。你需要掌握Python基本语法规则及变量、逻辑控制、内置数据结构、文件操作、高级函数、模块、常用标准库模块、函数、异常处理、MySQL使用、协程等知识点。
学习目标:掌握Python基础语法,具备基础的编程能力;掌握Linux基本操作命令,掌握MySQL进阶内容,完成银行自动提款机系统实战、英汉词典、歌词解析器等项目。
第二阶段WEB全栈。这一部分主要学习Web前端相关技术,你需要掌握HTML、CSS、JavaScript、jQuery、BootStrap、Web开发基础、VUE、Flask Views、Flask模板、 数据库操作、Flask配置等知识。
学习目标:掌握WEB前端技术内容,掌握WEB后端框架,熟练使用Flask、Tornado、Django,可以完成数据监控后台的项目。
第三阶段数据分析+人工智能。这部分主要是学习爬虫相关的知识点,你需要掌握数据抓取、数据提取、数据存储、爬虫并发、动态网页抓取、scrapy框架、分布式爬虫、爬虫攻防、数据结构、算法等知识。
学习目标:可以掌握爬虫、数据采集,数据机构与算法进阶和人工智能技术。可以完成爬虫攻防、图片马赛克、电影推荐系统、地震预测、人工智能项目等阶段项目。
第四阶段高级进阶。这是Python高级知识点,你需要学习项目开发流程、部署、高并发、性能调优、Go语言基础、区块链入门等内容。
学习目标:可以掌握自动化运维与区块链开发技术,可以完成自动化运维项目、区块链等项目。
按照上面的Python学习路线图学习完后,你基本上就可以成为一名合格的Python开发工程师。当然,想要快速成为企业竞聘的精英人才,你需要有好的老师指导,还要有较多的项目积累实战经验。
自学本身难度较高,一步一步学下来肯定全面且扎实,如果自己有针对性的想学哪一部分,可以直接跳过暂时不需要的针对性的学习自己需要的模块,可以多看一些不同的视频学习。