為什么plotly被稱為“有史以來最牛逼”可視化神器?

Plotly,一個用于做分析和可視化的在線平臺,曾被網友稱為“有史以來最牛逼”可視化神器(具體無從考據,只是在搜索資料時看到的),為何有如此稱號?因為它功能強大,功能強大,功能強大!重要的事情說三遍!
其功能強大到不僅與多個主流繪圖軟件的對接,而且還可以像Excel那樣實現交互式制圖,而且圖表種類齊全,并可以實現在線分享以及開源,等等;這種功能強大到還沒有一個人能夠完全掌握其全部應用,甚至國內對它的介紹使用也僅僅只是其中一部分。接下來筆者對plotly的一些隱藏功能進行介紹,并部分以python的使用來簡單說明。
(一)關于Plotly的功能
關于Plotly的功能介紹,有的從圖表類型上:基本圖表:20種;統計和海運方式圖:12種;科學圖表:21種;財務圖表:2種;地圖:8種;3D圖表:19種;擬合工具:3種;流動圖表:4種。。。。。
有的從交互性上:可以與R、python、matlab等軟件對接,并且是開源免費的,對于Python,Plotly與Python中matplotlib、numpy、pandas等庫可以無縫地集成,可以做出很多非常豐富,互動的圖表,并且文檔非常健全,創建圖形相對簡單,另外申請了API密鑰后,可以在線一鍵將統計圖形同步到云端。。。。
有的從制圖的美觀上:基于現代的配色組合、圖表形式,比matpltloa、R語言的圖表,更加現代、絢麗。。。。
即便如此,尚不能完全概括其功能,比如在圖表類型上,除以上所說,由于其開源性,plotly上還有很多網友上傳的自制圖表,在plotly主頁(https://plot.ly/ )點擊try free edition,在不登錄的情況下(出來的log in 對話框點X),就會看到很多網友分享的圖表,并且可以看到其代碼,如下圖:

Paste_Image.png
這是一個不同國家回答“人類是否早期動物物種”的“yes”回答數量,但它不屬于基本圖形,因為其中一個柱子進行了顏色標注。我們點擊該圖形,在不登陸的情況下,就可以看到制作該類圖形的api接口,根據它我們就可以模仿做出來該圖形。
Paste_Image.png
圖1
如圖,其中data是該圖形的數據表格,code則是不同軟件api接口代碼。
另外,plotly可以像excel那樣進行交互式制圖,在https://plot.ly/feed 點擊make a plot,就會進入plotly在線繪圖編輯工作臺,如圖:
Paste_Image.png
圖2
在Grid1下邊的表格中可以輸入數據,在左邊可以進行圖形類型、變量選取,以及圖形修飾等等工作,其中style就是對圖形的圖層、圖例、標題、坐標軸等等內容的互動式美化;analysis則是對圖形進行一些統計檢驗與分析,比如描述性統計、t檢驗、卡方檢驗、線性擬合、移動平均等等;JSON則是一些圖形要素的json數據展示。在登陸的情況下,將繪制圖形保存后,可以進行導出與分享,分享之后你就可以看到不同軟件api的代碼。下圖就是使用style的功能對繪制完成的圖形進行(trace、title等方面)美化。
另外 ,可以看到圖中有個上方一行import按鈕,點擊進入,可以從這個按鈕中導入excel、csv、SQL、URL等儲存方式的數據。
Paste_Image.png
(二)關于Plotly的python使用
在Plotly網站,點擊Python軟件類型選擇件就可以進入專門使用python的主頁(https://plot.ly/python/):
Paste_Image.png
圖4
左側一列是導航,包含如何開始使用,使用說明,離線使用以及于其他庫結合使用,還有例子,正文中下邊就是各種圖形,需要用哪種圖形就可以點擊進去尋找代碼。特別說明的是:Plotly需要注冊之后,并將注冊名與密碼放入代碼里才能使用。
在Python使用plotly,首先要安裝plotly庫,在Plotly——getting start里有說明:
安裝方法
pip install plotly 或者 sudo pip install plotly
需要升級的話,可以輸入:
pip install plotly –upgrade
注冊,在python交互環境下運行以下初始化命令,生成認證的安全文件 .plotly/.credentials。
py = plotly.plotly("Username", "API-Key")
(三)Plotly for python 的案例
Plotly for python 的案例,目前網上已有很多人分享,在這里不再贅述。在這里只是以一個簡單案例介紹Plotly for python 的一些隱藏功能。以散點圖為例:

import plotly.plotly as py
import plotly.graph_objs as go

# Create random data with numpy
import numpy as np
N = 100
random_x = np.linspace(0, 1, N) #建立0與1之間的等差數,1
random_y0 = np.random.randn(N)+5 #均值為5的正態分布隨機數
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-5#均值為-5的正態分布隨機數
# Create traces
trace0 = go.Scatter(
    x = random_x,
    y = random_y0,
    mode = 'markers',
    name = 'markers') #構造散點圖線條1
trace1 = go.Scatter(
    x = random_x,
    y = random_y1,
    mode = 'lines+markers',
    name = 'lines+markers')
trace2 = go.Scatter(
    x = random_x,
    y = random_y2,
    mode = 'lines',
name = 'lines')
data = [trace0, trace1, trace2]
py.iplot(data, filename='scatter-mode')

生成圖形如下:


Paste_Image.png

圖5
這就是三條不同的線條,一條是點,一條是點+線,一條是線;從這個案例我們可以看出:
(1)plotly是以圖中每一個元素作為一個函數進行設置的,而不是像matplotlib放在一個大函數下統一進行參數設置;如本例中的trace0、trace1、trace2,在里邊也可以設置其圖形形狀(mode)、圖例(name)的值;
(2)出來的圖形是交互式的,還可以進行選擇以及再編輯,如圖右上角是圖形范圍操作的一些按鈕,右下角是進入在線編輯工作臺的按鈕;
(3)進入在線編輯工作臺后,出現如圖2類似的界面,這時候可以對圖形進一步美化,比如加背景,標題、坐標軸等等,有很多類似的操作,但在這里要注意有的操作是免費的,有的操作是要付費才能使用的。
(4)再做一些修改之后,在登陸的情況下,保存修改后的圖形,然后在個人主頁上的my profile中點擊view就可以預覽你所制作的圖形,此時你所手動操作的一些修飾也會以代碼的形式展示出來,并且是以不同R、python、matlab等軟件展示出來,當你不會以輸入代碼的形式進行圖形美化的時候,這種方式會給你以提示!!
(5)可以將你的圖形以pdf、ppt、png等等格式下載下來,可以將數據下載到csv、sql等儲存中,也可以將你的圖形在facebook、推特、github等等地方分享,如果你有賬號的話。。。
如圖,我在plotly工作臺上給圖形加了一個大標題以及背景之后;


Paste_Image.png
圖6
在code-python下會自動看到我的手動操作對應的python代碼
data = Data([trace1, trace2, trace3])
layout = {
  "font": {"size": 13}, 
  "paper_bgcolor": "rgb(188, 189, 34)", 
  "plot_bgcolor": "rgb(255, 255, 255)", 
  "title": "zjying scatter", 
  "titlefont": {
    "color": "rgb(68, 68, 68)", 
    "size": 21
  }, 
  "xaxis": {
    "autorange": True, 
    "range": [-0.062925170068, 1.06292517007], 
    "type": "linear"
  }, 
  "yaxis": {
    "autorange": True, 
    "range": [-9.28642456481, 8.63397900633], 
    "type": "linear"
  }
}
fig = Figure(data=data, layout=layout)
plot_url = py.plot(fig)

另外,plotly還可以對接pandas包,可以通過pandas的pd.read_csv()命令導入csv格式數據。
總之,從以上一個小小案例,可以看到plotly的強大之處,在于無時無刻不交互——對接各種繪圖軟件、數據庫,可以像excel一樣對圖形進行編輯,可以線上分享也可以學習各種各樣的個人定制圖表,可以下載成各種常用的輸出形式。不過由于plotly是國外網站,網站打開速度有時候會慢,另外,免費版本的potly功能有的地方一些限制,但是能滿足一般需求。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容