[Vis] Plot.ly Offline (Python)|資料視覺化
前言
之前 Data Vis sharing 的時候,很推 plot.ly 這個想寫 code 也可以不想就拖拖拉拉 (drag-and-drop) 的視覺化工具。但當時還不知道有 offline 的功能,試過如果要 private 圖的話,只有 10 張圖的 quota,對只是想要在研究 project 裡面嘗試視覺化自己的資料的童鞋應該不太夠用 rz。
因緣際會,在尋尋覓覓 team 上可以用的 cloud notebook 資源的時候找到了 Azure Notebook 平台 (https://notebooks.azure.com/) ,對公開的分享來說真的很方便而且目前應該是不收費 (https://notebooks.azure.com/faq)。在上面要做視覺化的時候找到了教學 (https://moderndata.plot.ly/using-plotly-in-jupyter-notebooks-on-microsoft-azure/)(至於為何不繼續用的原因是:目前不支援 private group sharing,跟其他 MS 的 ML 產品有 workspace 概念不太一樣,汗)
廢話說得太多了所以覆蓋 notebook library 連結結束這回合(不是)https://notebooks.azure.com/anon-sjnz2a/libraries/ichisharing
步驟講解
1. import 要用的東西
小提醒:在 MS 的服務上直接用 package 的時候都要記得檢查版本不然會嚇一跳喔~想說 doc 上有的怎麼無法用,或是 notebook 會動的搬到 ML studio UI module 就爛掉(明明都在同個 workspace 版本也是會不一樣的喔,嚇到你了吧 :D)
2. 找個 data 畫
找經典 iris 做做 PCA 降到三維(人家原本也才四維…),降到 3 是為了畫很酷的 3D 可互動圖,私心 ❤
3. 畫圖:在 figure 裡給點 data 跟 layout
- Scatter3d:
x, y, z 座標各是要用哪個欄位的值、
mode 可以選{點 marker, 線 line}
(https://plot.ly/python/line-and-scatter/) - marker:
以 y_label 設定顏色對應、
建議使用有透明度的設定能容易看出密度、
color scale 使用內建的 Viridis,隨心情看 data 情境任君挑選(https://plot.ly/python/colorscales/) - name/text:
在 annotation 上多加文字說明
(https://plot.ly/python/text-and-annotations/)
4. 成品
這個 Gif 有點失控,只是示意這孩子是可以互動的,實體請到 notebook 上做互動。
5. 存檔
存檔這件事非常有趣,html檔是容易的,如下圖。
但是要存成 png/svg 的話,在 offline 下的 image 參數是等到打開 html file 才會開始下載。(https://plot.ly/python/static-image-export/)
可以用 py.image 但是會噴沒有認證 Error 囉~畢竟就不是 offline 了。
(PlotlyRequestError: You must be authenticated to generate an image via json.)
後記
沒想到只是記錄個簡單的筆記也可以為了寫 sample code, 錄 gif, 考證一些久遠的踩雷記憶而弄這麼久Q
先寫 plot.ly 是因為接下來要寫 Redash~
Redash 這個 dashboard 服務有用到 plot.ly喔,雖然對 user 來說是不用寫 plot.ly code的那部分 :D
對,就是拖拖拉拉的那部分~ヽ( ° ▽°)ノ
歡迎留言好用的視覺化工具呦!