Plotly 好用嗎?資料視覺化與可互動圖表的必備利器,新手必學 Python Plotly 懶人包

Plotly 好用嗎?資料視覺化與可互動圖表的必備利器,新手必學 Python Plotly 懶人包

在人工智慧(Artificial Intelligence,AI)與大數據分析(Big Data)領域中,「視覺化圖形報表」一直是不可或缺的一環。

清楚展現資料分析後的結果,可幫助決策者做下一步規劃,而 Plotly 是目前很常用的資料視覺化開發庫。

對新手來說,Plotly 十分友善,簡單好學易上手,容易使用,功能卻不馬虎,反而更強大!

本文將介紹 Plotly 的應用、優缺點、計價,以及新手如何安裝 Plotly、如何引用並編寫 Plotly 繪圖程式碼,讓你輕鬆又靈活地畫出漂亮且專業的資料圖表。




什麼是 Plotly?

Plotly 是一個 open-source 科學圖形函式庫(library),主要用來畫圖,幫助統計分析與報表呈現,它還能更進一步做到視覺化互動報表。

相比 Matplotlib 與 Seaborn,它將資料視覺化提升到新層次。

Plotly 內建完整的互動能力和編輯工具,支援線上和離線模式,提供穩定的 API 使其與現有應用整合,既能在瀏覽器展示圖表,也能存入本地端電腦。

Plotly

Plotly 使用 Python 的 Django 框架構建,前端使用 JavaScript 和可視化庫 D3.jsHTMLCSS

它不只支援 Python,也支援 R、JavaScript 等語言。




為什麼要用 Plotly?有什麼優點?

(1) 建立互動報表方便快速

Plotly 能輕鬆生成各種圖表的框架,快速繪製賞心悅目的圖表,還能幫圖表做互動效果、部署到瀏覽器,非常容易上手。

在 Python 中最廣為人知的圖表繪製 library 是 Matplotlib,但它相當複雜,若想畫比較漂亮的圖需要花很多時間和精力。

除非你想畫很高階複雜的圖表,否則使用 Plotly 其實就足夠了!

【補充】:如果你是用 Python 來開發,Plotly 畫的圖可以直接在 Jupyter 上呈現,還能保存成離線網頁,或者也可以保存在 Plotly 企業版的雲端服務器,方便雲端在線查看。

Plotly Dash Demo

Plotly 範例(截自官網)



(2) 功能強大

Plotly 能夠畫出許多專業的圖表,功能完整又強大,且文件很詳盡,有許多實作範例會附上程式碼讓初學者參考。(點我看 Plotly 文件)

此外,Plotly 支援多種程式語言。當資料科學家在做數據分析、機器學習(Machine Learning)、深度學習(Deep Learning)或預測等計算時,可自由選擇熟悉的 Python、Julia 或 R 語言,運用 Plotly 繪製視覺化報表來分析資料。



(3) 提升開發效率,降低開發成本

Plotly Gallery 提供許多範例模板,可以找貼近自己需求的模板為基底來做開發,加快開發速度,減少瓶頸與延遲。

【補充】:大部分的模板都有提供完整的程式碼在 Github。(Plotly Templates)

Plotly Dash App

由於 Plotly 好開發又功能強大,不需額外特別找很多專門的開發人員或 IT 專家團隊來維護,所以大大減少人力成本,不管是個人、新創公司甚至具規模的大企業都可使用。

如果還想要一些進階的功能,它也提供許多定價計劃(pricing plans),可以滿足用戶的內部部署和雲端相關的需求。



(4) 開放的 API,可與第三方連結

Plotly 擁有開放的 API,可以完全客製化自己想要的圖表,還可以很輕鬆地與其他第三方(third-party)的應用程式整合,並在現有的工作流程或程式結構中運作。



(5) 社群支持,隨時可提問討論

任何工具或 library 如果沒有開發人員支持,就很難被廣泛使用,容易面臨絕跡。

Plotly 社群很活絡,因為幾個主要的創建與開發者常在社群裡非常熱心地回答大家的問題,也會斟酌大家的建議持續改版,讓 Plotly 越來越好用、越來越容易被接受!

此外,由於使用來開發的人越來越多,彼此互相支援,形成良好的正向循環

所以,如果有任何疑問,都可以獲得社群裡各式各樣不同開發人員的即時支持。




Plotly 如何計價?

目前 Plotly 除了有完全免費的 open-source 基本款,還有企業版(Dash Enterprise)。

如果只是想試用 Plotly 來開發報表,其實基本款的功能就很齊全,非常夠用!

而企業版提供部署環境(可選 Azure、AWS 或 GCP)、雲端儲存、帳號管理、系統整合等服務,省去硬體設備與網路維護開發的人力。

Plotly Dash Pricing

Plotly Dash Pricing 一部分表格(截圖自官網)

【補充】:如果想佈建在自己的 server,最常見的方式是先包成 Docker Image 再發布到目標機台。




有哪些大企業使用 Plotly?

雲端運算、機器學習與大數據分析目前非常熱門,幫助許多企業改變和優化工作流程。在計算、分析、建模的過程中需要圖表呈現研究結果,才能更進一步做決策。

許多不同領域的公司應用 Plotly 來做報表,如特斯拉、NVIDIA (半導體設計公司)、花旗銀行等。(如下圖)

Plotly Dash Enterprise



Plotly 有什麼缺點?要注意什麼?

(1) 太高階且複雜的圖表可能畫不出來

雖然 Plotly 提供非常多樣的圖表,且幾乎大部分常用到的圖表都有支援,但有些仍畫不出來,比如 Contour Map 等,或許未來會開發出來。

ps. 如果有什麼需要用到的圖表或功能,都可以在 Plotly 社群提出需求。



(2) 若互動設計太多或太複雜,容易有 output 衝突

Plotly 利用 callback functions 來建立圖表與圖表間的互動,可以很彈性地客製化。

但有個限制是同樣的 output 不能出現在多個 callback functions,所以要避免設計得太複雜、太多層次,以免產生衝突互卡。

ps. 注意:這裡指的是多個圖表間彼此的互動,而非單一圖表內本身就有的互動功能,圖表內互動不需另外寫 functions。




怎麼操作 Plotly?如何引用圖表?

Plotly 的函式庫有:Plotly Python、Plotly R、Plotly Julia、Plotly JavaScript、Plotly Dash …。(點我到官網 Plotly Open Source Graphing Libraries)

它們的文件都非常詳盡,並搭配範例,讓人淺顯易懂,雖然全都是英文,用 google 翻譯大概也能看懂七、八成。以下介紹以 Plotly Python 為主:


(1) Python 安裝 Plotly

pip install plotly

如果使用 Anaconda 來撰寫 Python,就在 Anaconda Prompt 下指令:(記得按滑鼠右鍵『系統管理員身分執行』打開)

conda install -c plotly plotly



(2) Plotly 圖表引用與簡單範例

根據不同的使用需求,Plotly 文件將圖表分類為:基本圖表(如長條圖、折線圖、圓餅圖等)、統計圖表、科學圖表、地圖(底層大多用 Mapbox)、3D 圖 …,以及因應 AI 和機器學習結果呈現的圖表等。

而撰寫繪圖程式碼時,Plotly Express 是最常用到的之一,其特點有:

  1. 是 Plotly.py 的高級封裝,但完全免費
  2. 為複雜的圖表提供簡潔的語法,讓初學者容易上手。
  3. 最重點的是,Plotly Express 與 Plotly 生態系統的其他部分完全兼容


簡單實作示範

以 Plotly 內建的 Gapminder 資料集舉例,顯示 2007 年不同區域的人均預期壽命和人均 GDP 間的趨勢:

import plotly_express as px

gapminder2007 = px.data.gapminder().query("year == 2007")

px.scatter(gapminder2007, x="gdpPercap", y="lifeExp", color="continent")  # gdpPercap:人均 GDP, lifeExp:人均預期壽命, continent:區域大陸

進一步加入國家(country)與人口數(pop)的條件:

px.scatter(gapminder2007, x="gdpPercap", y="lifeExp", color="continent", size="pop", hover_name="country")

產生的互動圖表如下,如果好奇哪一個點(一個點代表一個國家)或哪個區域,都可以自由點選!

Plotly Express Example

因為含有地理資料,也可以做成動畫地圖:

Plotly Express Example

文件裡還有許多不同圖表的範例,都可以自己實作玩玩看,真的蠻有趣的,又很好用!



(3) 以 API 連結在 Plotly Chart Studio 儲存的圖表

如果不想費力地部署到自己的 server,可以利用具有線上 web 服務託管的 Chart Studio 來儲存圖表:

  1. 首先,須註冊建立一個帳號。
  2. 接著,提取你的個人 API key 讓其他人可以連結到你的圖表。

拿到 API key 後,想要鑲到程式裡面可以使用 set_credential_files() 函式來初始化:

import chart_studio

plotly.tools.set_credentials_file(

    username="YourAccountName",       # 帳戶名稱

    api_key="YourAPIKey"              # API key

)




結語

雖然目前在台灣,Plotly 還不是那麼盛行,不過隨著 AI 與機器學習高速發展,可以互動的客製化報表需求大增,尤其,越來越多美國企業或全球化公司都在使用。

我在工作上也用 Plotly 來建立許多報表,跟客戶做 presentation 的時候很有用,一目瞭然,不但提升開會效率,而且套用方便、建構快速,還能省下很多準備材料的時間,真的大推!

還有,先前參與一項專案時,將 Plotly 圖表鑲進系統網站和 App 中,讓客戶也享用互動圖表的方便,隨時清楚掌握有用的資料,幫助各種營運決策!






留言

熱門文章

想自學 Python 卻不知從何下手?10 個推薦給初學者的 YouTube 頻道

Python 是什麼?Python 可以做什麼?新手必看 Python 入門懶人包

Selenium 是什麼?用 Python Selenium 網路爬蟲自動蒐集資料,提升工作效率必學!