數(shù)據(jù)分析離不開數(shù)據(jù)可視化躲查,我們最常用的就是pandas,matplotlib译柏,pyecharts當(dāng)然還有Tableau镣煮,看到一篇文章介紹plotly制圖后我也躍躍欲試,查看了相關(guān)資料開始嘗試用它制圖鄙麦。
1. Plotly
Plotly 是一款用來做數(shù)據(jù)分析和可視化的在線平臺典唇,功能非常強大,可以在線繪制很多圖形比如條形圖镊折、散點圖、餅圖介衔、直方圖等等恨胚。而且還是支持在線編輯,以及多種語言python炎咖、javascript赃泡、matlab、R等許多API乘盼。它在python中使用也很簡單升熊,直接用pip install plotly就可以了。推薦最好在jupyter notebook中使用绸栅,pycharm操作不是很方便级野。使用Plotly可以畫出很多媲美Tableau的高質(zhì)量圖:
plotly制圖
我嘗試做了折線圖、散點圖和直方圖粹胯,首先導(dǎo)入庫:
from plotly.graph_objs import Scatter,Layout
import plotly
import plotly.offline as py
import numpy as np
import plotly.graph_objs as go
#setting offilne 離線模式
plotly.offline.init_notebook_mode(connected=True)
上面幾行代碼主要是引用一些庫勺阐,plotly有在線和離線兩種模式,在線模式需要有賬號可以云編輯矛双。我選用的離線模式渊抽,plotly設(shè)置為offline模式就可以直接在notebook里面顯示了。
2. 制作折線圖
N = 100
random_x = np.linspace(0,1,N)
random_y0 = np.random.randn(N)+5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-5
#Create traces
trace0 = go.Scatter(
x = random_x,
y = random_y0,
mode = 'markers',
name = 'markers'
)
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)
折線圖
隨機設(shè)置4個參數(shù)议忽,一個x軸的數(shù)字和三個y軸的隨機數(shù)據(jù)懒闷,制作出三種不同類型的圖。trace0是markers栈幸,trace1是lines和markers,trace3是lines愤估。然后把三種圖放在data這個列表里面,調(diào)用py.iplot(data)即可速址。 繪制的圖片系統(tǒng)默認(rèn)配色也挺好看的~
3. 制作散點圖
trace1 = go.Scatter(
y = np.random.randn(500),
mode = 'markers',
marker = dict(
size = 16,
color = np.random.randn(500),
colorscale = 'Viridis',
showscale = True
)
)
data = [trace1]
py.iplot(data)
把mode設(shè)置為markers就是散點圖玩焰,然后marker里面設(shè)置一組參數(shù),比如顏色的隨機范圍芍锚,散點的大小昔园,還有圖例等等。
散點圖
4. 直方圖
trace0 = go.Bar(
x = ['Jan','Feb','Mar','Apr', 'May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'],
y = [20,14,25,16,18,22,19,15,12,16,14,17],
name = 'Primary Product',
marker=dict(
color = 'rgb(49,130,189)'
)
)
trace1 = go.Bar(
x = ['Jan','Feb','Mar','Apr', 'May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'],
y = [19,14,22,14,16,19,15,14,10,12,12,16],
name = 'Secondary Product',
marker=dict(
color = 'rgb(204,204,204)'
)
)
data = [trace0,trace1]
py.iplot(data)
直方圖是我們比較常用的一種圖形并炮,plotly繪制直方圖的方式跟我們在pandas里面設(shè)置的有點類似默刚,他們非常直觀的體現(xiàn)了不同月份兩個生產(chǎn)力之間的差異。
上面的制圖只是plotly的冰山一角逃魄,都是一些最基本的用法荤西,它還有很多很酷的用法和圖形,尤其是跟pandas結(jié)合畫的圖非常漂亮。比如一些股票的K線圖邪锌,大家有興趣可以研究研究~