又雙叒叕要跟客戶彙報了,圖都準備好了嗎?matplotlib出圖嫌醜?那用用plotly吧,讓你的圖看上去經費爆炸~git
P1 原由github
第一次接觸plotly這個庫是在咱們作的一個列車信號數據挖掘的項目裏,當時用下來總以爲有些雲裏霧裏的,感受很是不方便,API也不熟悉。後來又在別的項目上摸索了幾回,忽然發現這個庫套路仍是很清晰的,可能我對官方教程的理解還不太透徹。因而我打算把本身摸索出來的內容寫下來。本文僅針對離線繪圖,即便用 plotly.offline.iplot(fig) 繪圖。app
P2 總體框架框架
首先咱們導入一些必要的內容:佈局
import plotly from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot import plotly.graph_objs as go from plotly import tools init_notebook_mode(connected=True)
若是你在Jupyter Notebook中發現你的圖沒法顯示,或者一篇空白,請檢查右上角是否爲"Trusted"狀態,不是話點一下,將其轉爲Trusted,如還不顯示,就試試Ctrl+F5強制刷新。spa
官方的教程主要是基於一個個單獨的實例,不太容易觸類旁通。但其實plotly的套路很是簡單樸實。code
整體來講,當咱們繪製一張圖時,咱們須要經過一個go.Figure實例,咱們能夠把它當作畫布。在go.Figure中,有2個東西十分重要,一個是data,主要是咱們的數據;另外一個是layout,關乎圖面佈局。blog
data傳入的是一個列表,裏面能夠包含一組或多組數據,每一組數據被封裝在一個圖形實例中,好比go.Scatter(線圖)或者go.Heatmap(熱力圖),每一個圖形實例中都包含了數據自己,以及和數據相關的某些繪圖屬性。教程
layout傳入的則是一個go.Layout實例,咱們能夠爲其增長不一樣的屬性來實現對圖面佈局的控制。ip
而當咱們須要分圖時,咱們會使用tools.make_subplots(),並經過append_trace()來將data貼進不一樣的分圖,其餘都是大同小異,依舊使用layout來控制圖面。
P3 示例代碼
我分別針對最經常使用的幾種圖:線圖、條形圖、地圖和熱力圖寫了一些示例代碼,詳見: