Python Plotly 是什麼

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

Last Updated on 2021-10-17 by Jeslyn

在大數據分析(Big Data)的領域中,視覺化圖形報表一直是不可或缺的一環,可以清楚展現資料分析後的結果,幫助做下一步的決策,而 Plotly 是目前很常用的資料視覺化開發庫。

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

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

Plotly 是什麼?

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

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

Plotly

Plotly 使用 PythonDjango 框架構建,前端使用 JavaScript 和可視化庫 D3.jsHTMLCSS。它不只支援 Python,也支援 R、JavaScript 等語言。


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

建立互動報表方便快速

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

在 Python 中最廣為人知的圖表繪製 library 是 Matplotlib,但是它相當複雜,若想畫比較漂亮的圖需要花很多時間和精力。除非你想畫很高階複雜的圖表,否則使用 Plotly 其實就足夠了。

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

Plotly Dash Demo
Plotly 範例(截自官網)

功能強大

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

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


提升開發效率,降低開發成本

Plotly Gallery 提供許多範例模板,可以找貼近自己需求的模板為基底來做開發,加快開發速度,減少瓶頸與延遲。ps. 大部分的模板都有提供完整的程式碼在 Github。(Plotly Templates)

Plotly Dash App

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

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


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

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


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

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

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

此外,由於使用來開發的人員越來越多,彼此互相支援,形成良好的正向循環。所以如果有任何疑問,都可以獲得社群裡各式各樣不同開發人員的即時支持。


Plotly 計價

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

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

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

Plotly Dash Pricing
Plotly Dash Pricing 部分表格

ps. 如果想佈建在自己的 server,最常見的方式是先包成 Docker Image 再到發布到目標機台,可以參考下面 2 篇文章。

延伸文章:第一次在 AWS EC2 執行 Docker 就上手,新手入門之實作教學 & 心得分享
延伸文章:如何在 QNAP NAS 上建立客製化 app? 3 個超簡單的方法分享


有哪些大企業使用 Plotly?

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

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

Plotly Dash Enterprise

Plotly 的缺點與其他注意事項

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

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

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


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

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

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

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


Plotly 操作與圖表引用

Plotly 的函式庫有 3 大類:Plotly Python、Plotly R、Plotly JavaScript。(點我到官網 Plotly Open Source Graphing Libraries)

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

Python 安裝 Plotly

pip install plotly

如果使用 Anaconda 來撰寫 Python,就下指令:

conda install -c plotly plotly

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

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


以 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 與機器學習逐漸發展,可以互動的客製化報表需求未來肯定大增,尤其現在越來越多美國企業或全球化公司都在使用。

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


※ 更多文章:

Selenium 是什麼

Selenium 是什麼?用 Python Selenium 自動爬網頁抓報表,初學者必看的簡單教學

Python入門

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

推薦 Python 初學者的 YouTube 頻道

10 個推薦 Python 新手用來幫助學習 Coding 的 YouTube 頻道

初學程式設計

想學寫程式該如何入門?初學者怎麼選擇程式語言?完全沒有技術背景也可以學嗎?


如果覺得這篇文章有幫助,請幫我拍手 5 下鼓勵我、支持我,讓我繼續有創作的動力!

如果有任何問題或想分享的資訊,歡迎在下方留言!

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *