介紹
「Visualization gives you answers to questions you didn』t know you had.」
- Ben Shneiderman
我投身數據科學領域已經幾年,但是因為個人背景問題我花了一段時間才真正過渡到數據科學。
我的思維方式發生的最變化之一就是我如何看待數據的方式。最初,當我的經理要求我分析某些數據時,我曾經提出過普通的數據可視化(散點圖,條形圖等)。
我不能做到上面引文Ben Shneiderman說得那樣。但是真正掌握數據可視化技術會打開了你以前從未曾想過的世界的大門,可視化可以剝離原始數據集周圍的圖層。
這通常是成功和平凡的數據科學項目之間的差異。
因此,在本文中,我的目標是向你展示數據可視化的強大功能。我整理了11個令人興奮的可視化,涵蓋了各種主題。為了表明你可以在你選擇的任何工具中執行此操作,我們將在Python,R,Tableau以及D3.js中介紹這些可視化。
而你面臨的挑戰就是選擇可視化(已經為所有這些提供的代碼)並在你選擇的工具中提供你自己的版本。
R中的數據可視化
ggplot2庫的創建使R成為數據可視化的首選工具(至少對於程式設計師來說!)。我使用R開始自己的數據科學之旅時就立即被ggplot的美麗和強大所吸引。
時尚的可視化,即時見解,挖掘模式,所有這一切只需幾行代碼。毫不奇怪,即使是硬核Python程式設計師也會在他們的Jupyter notebooks中導入ggplot2(是的,現在能做到)。
如果你正在使用R並且沒有探索過ggplot2,那今天請這麼做:
- R中數據可視化綜合指南[1]
- 使用ggplot2包時用戶總是會問的10個問題[2]
在R中創建BBC樣式的可視化
這不是嚴格意義上的一個可視化,但這肯定不是問題,對吧?上面的儀錶板是BBC數據團隊發布的可視化的融合。多年來我一直關注BBC網站,這是一個受歡迎的版本。
BBC數據團隊實際上已經開發並發布了R包和R cookbook ,用於生成如上所述的可視化。R包稱為bbplot。它提供了以BBC數據團隊使用的樣式創建和導出ggplot中可視化的函數。
以下是幫你解決問題的關鍵資源:
- bbplot包[3]
- BBC的R cookbook[4]
R中的交互式圖
交互式是演示中最吸引人的一個方面(如果使用正確)。這種可視化向我們展示了不同的大陸多年來預期壽命相對於人均GDP的變化情況。
如此多的信息都擠進了這麼小的空間。用於創建上述可視化的包叫gganimate!毫不奇怪,ggplot的強大功能擴展到另一種令人敬畏的可視化類型。
你可以查看我們在R中構建交互式圖的指南:
- 如何在R中構建動畫圖來分析健身數據[5]
R的Sankey圖
這是Sankey圖的典型示例。它基本上顯示了信息流,其中箭頭的寬度與流量成比例。上面的可視化顯示了Facebook的自定義列表廣告的相關性。
這種可視化是使用R中的ggalluvial包創建的。它結合了原始alluvial包的風格和靈活性以及tidyverse的強大功能。
完整的代碼,只需幾行,可以參考這裡[6]。
Tableau中的數據可視化
「In good information visualization, there are no rules, no guidelines, no templates, no standard technologies, no stylebooks. You must simply do what it takes.」
– Edward Tufte
Edward Tufte是數據可視化領域的先驅。我覺得這句話真的適用於我們使用Tableau生成的可視化。Tableau提供的眾多功能和自定義功能幾乎是無與倫比的。
如果你有興趣開始使用Tableau,那麼你來對地方了!以下是一系列文章,可幫助你從Tableau初學者過渡到專家:
- 初學者學Tableau,讓數據可視化變得簡單[7]
- 數據科學和商業智能專業人員中級Tableau指南[8]
- 學習高級Tableau的循序漸進指南[9]
世界上最大的選舉--印度的選舉可視化
這是一個真正驚人的可視化。我只採用了完整儀錶板的一部分。這種可視化的範圍和所涵蓋的數據量是驚人的,對於對此類分析感興趣的任何人都非常有用。
每個數據點代表有關每個席位的詳細信息,包括獲勝者的姓名,州,政黨和選區。看看這個可視化是多麼整潔,儘管包裝在一堆信息中。這是我們在每日/每周/每月報告中都可以追求的,對嗎?
可以從這裡[10]下載的完整Tableau儀錶板。
使用Tableau監控銷售業績
我想要包含一個真實的業務儀錶板。如果你正在努力想像可以在現實世界中使用這些可視化的地方(使用你的想像力!),你會發現這非常有用。
這是對銷售數據的分析,用于衡量與原始配額的距離。我特別喜歡第一個水平標籤,它整齊地總結了客戶或利益相關者需要知道的關鍵數字。
完整的Tableau工作表包含五個完整的儀錶板,從不同的角度查看這些銷售數據。如果你在銷售或營銷領域工作,我真的覺得你應該將此作為參考。
1910-2018電影類型流行度可視化
我是一個大電影迷,所以這個可視化立即引起了我對Tableau Public庫的注意。請記住,隨著時間的推移,電影類型的流行度的變化,每種類型都有不同的軸範圍。
對我來說最突出的是,你可以將其視為具有多個數據點的儀錶板。你是否可以想到類似的用例,這樣的儀錶板是否可以派上用場?
你可以下載整個工作表[11]並在Tableau中使用它。
D3.js中的數據可視化
如果你想創造令人驚嘆的動畫可視化,D3.js應該是你的首選工具。它是一個功能強大的庫,使你能夠為你可以想像的任何類型的故事情節構建自定義可視化。
這部分可能是我在本文中介紹的四個部分中最喜歡的部分。你應該強烈考慮將D3.js添加到你的技能組中,特別是如果你想要定期處理數據可視化。
以下是有關如何開始使用D3.js的兩篇熱門文章:
- 初學者使用D3.js在Web上構建數據可視化的指南[12]
- 如何使用D3.js在Web上創建令人印象深刻的數據可視化?[13]
概念圖 - 概念之間的關係
我經常使用概念圖。我可以很容易地描繪不同概念或知識點之間的關係。正如維基百科所說,「概念圖通常將想法和信息表示為方框或圓圈,它與向下分支的分層結構中的標記箭頭相連接」。
你會發現它可用於映射業務決策,流程圖,信息設計,知識可視化等。這是一個評價不足但又有用的工具,可用於裝備你的武器庫。
這個概念圖[14]具有很強的交互性,你還可以嘗試使用不同的節點。
D3.js中的光芒圖(Sunburst)可視化
啊,太棒了!此可視化顯示如何將光芒圖概念與描述事件序列的數據結合使用。
想一想,你可以使用它來可視化客戶的旅程。你可以使用此可視化查看所有可能的路徑,而不是靜態漏斗。
這裡[15]有完整的D3.js代碼來生成這個序列的光芒圖。
可視化權力的遊戲人物之間的互動
你是權力的遊戲的粉絲嗎?如果是我想你會喜歡這個可視化。它代表了每個人物的影響力,基於他/她的互動在「A Storm of Swords」一書中出現的互動的次數。
請注意,節點表示人物,連結表示他們之間的交互。節點和名稱的大小表示人物的影響力。看到Tyrion影響力最大,難道不是嗎?
你可以使用本教程[16]構建自己的權力的遊戲的可視化。
Python中的數據可視化
我們經常認為Python是數據科學的終極程式語言。我們將其與數據清洗,構建預測模型甚至某些數據工程任務相關聯。但是你知道Python實際上對於生成數據可視化非常有用嗎?
沒錯,Python附帶了兩個獨立的可視化庫 - matplotlib和seaborn。你可以查看此文章以了解有關這些庫的更多信息。
- 9種在Python中執行數據可視化的流行方法[17]
火星地質圖
這種可視化是一件美麗的事情。幾天前我偶然發現了這張火星的地質圖,我仍然驚訝於這是用Python創建的。
用於創建這種精彩可視化的Python庫是:
- Matplotlib
- NumPy
- Pandas
- Cartopy
如果字體太小而無法看清,或者你希望將其列印為海報 - 請在此處[18]完整的高解析度圖像。你可以在此處[19]獲取此可視化的Python代碼。GitHub存儲庫有完整的教程可以幫助你入門。
用Python繪製地球同步衛星
我對數據科學界對衛星數據的研究著迷。我們已經看到了新的行星被發現,地面圖像被重建,美國國家航空航天局預測地震等等。
PyEphem包用於在Python中創建這個令人印象深刻圖像,PyEphem基本上允許我們在Python中實現天文算法。
相當多的數據科學愛好者嘗試繪製這個可視化,你可以在這裡[20]找到所有的資源。
[1]: https://www.analyticsvidhya.com/blog/2015/07/guide-data-visualization-r/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[2]: https://www.analyticsvidhya.com/blog/2016/03/questions-ggplot2-package-r/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[3]: https://github.com/bbc/bbplot
[4]: https://bbc.github.io/rcookbook/
[5]: https://www.analyticsvidhya.com/blog/2019/04/how-built-personalized-interactive-fitness-tracker-dashboard-r/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[6]: https://stackoverflow.com/questions/50395027/beautifying-sankey-alluvial-visualization-using-r
[7]: https://www.analyticsvidhya.com/blog/2017/07/data-visualisation-made-easy/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[8]: https://www.analyticsvidhya.com/blog/2018/01/tableau-for-intermediate-data-science/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[9]: https://www.analyticsvidhya.com/blog/2018/03/tableau-for-advanced-users-easy-expertise-in-data-visualisation/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[10]: https://public.tableau.com/en-us/gallery/worlds-largest-vote?tab=featured&type=featured
[11]: https://public.tableau.com/profile/bo.mccready8742#!/vizhome/FilmGenrePopularity-1910-2018/GenreRelativePopularity
[12]: https://www.analyticsvidhya.com/blog/2017/07/beginner-guide-build-data-visualisations-web-d3-js/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[13]: https://www.analyticsvidhya.com/blog/2017/08/visualizations-with-d3-js/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[14]: http://www.findtheconversation.com/concept-map/
[15]: https://bl.ocks.org/kerryrodden/766f8f6d31f645c39f488a0befa1e3c8
[16]: https://www.analyticsvidhya.com/blog/2017/08/visualizations-with-d3-js/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[17]: https://www.analyticsvidhya.com/blog/2015/05/data-visualization-python/?utm_source=blog&utm_medium=11-data-visualizations-python-r-tableau-d3js
[18]: https://external-preview.redd.it/YsUvGQZYDg6UpWoAg_4dR5s-B_8Y_JtPQfylTOG6p10.jpg?auto=webp&s=53ae6d53f5ce977ffb9f44caa336794dae1ad21e
[19]: https://www.reddit.com/r/dataisbeautiful/comments/c4elys/oc_a_geologic_map_of_mars/
[20]: https://www.reddit.com/r/dataisbeautiful/comments/3gxp87/i_just_plotted_every_tleinfo_satellite_above_my/