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開發工程師。當然,想要快速成為企業競聘的精英人才,你需要有好的老師指導,還要有較多的項目積累實戰經驗。
自學本身難度較高,一步一步學下來肯定全面且扎實,如果自己有針對性的想學哪一部分,可以直接跳過暫時不需要的針對性的學習自己需要的模塊,可以多看一些不同的視頻學習。