數(shù)據(jù)分析離不開(kāi)數(shù)據(jù)可視化唁奢。我們最常用的就是pandas矿卑,matplotlib否淤,pyecharts當(dāng)然還有Tableau满败,看到一篇文章介紹plotly制圖后我也躍躍欲試,查看了相關(guān)資料開(kāi)始嘗試用它制圖
Plotly 是一款用來(lái)做數(shù)據(jù)分析和可視化的在線平臺(tái)叹括,功能非常強(qiáng)大,可以在線繪制很多圖形比如條形圖算墨、散點(diǎn)圖、餅圖汁雷、直方圖等等净嘀。而且還是支持在線編輯报咳,以及多種語(yǔ)言python、javascript挖藏、matlab暑刃、R等許多API。它在python中使用也很簡(jiǎn)單膜眠,直接用pip install plotly就可以了岩臣。推薦最好在jupyter notebook中使用,pycharm操作不是很方便宵膨。使用Plotly可以畫(huà)出很多媲美Tableau的高質(zhì)量圖:
我嘗試做了折線圖架谎、散點(diǎn)圖和直方圖,代碼如下:
首先導(dǎo)入庫(kù)
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)
上面幾行代碼主要是引用一些庫(kù)辟躏,plotly有在線和離線兩種模式谷扣,在線模式需要有賬號(hào)可以云編輯。我選用的離線模式捎琐,plotly設(shè)置為offline模式就可以直接在notebook里面顯示了会涎。
1.制作折線圖
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)
隨機(jī)設(shè)置4個(gè)參數(shù),一個(gè)x軸的數(shù)字和三個(gè)y軸的隨機(jī)數(shù)據(jù)瑞凑,制作出三種不同類(lèi)型的圖末秃。trace0是markers,trace1是lines和markers,trace3是lines籽御。然后把三種圖放在data這個(gè)列表里面蛔溃,調(diào)用py.iplot(data)即可。
繪制的圖片系統(tǒng)默認(rèn)配色也挺好看的~
2.制作散點(diǎn)圖
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就是散點(diǎn)圖篱蝇,然后marker里面設(shè)置一組參數(shù),比如顏色的隨機(jī)范圍徽曲,散點(diǎn)的大小零截,還有圖例等等。
3.直方圖
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繪制直方圖的方式跟我們?cè)趐andas里面設(shè)置的有點(diǎn)類(lèi)似涧衙,他們非常直觀的體現(xiàn)了不同月份兩個(gè)生產(chǎn)力之間的差異。
上面的制圖只是plotly的冰山一角奥此,都是一些最基本的用法弧哎,它還有很多很酷的用法和圖形,尤其是跟pandas結(jié)合畫(huà)的圖非常漂亮稚虎。比如一些股票的K線圖撤嫩,大家有興趣可以研究研究~
鏈接在此:https://plot.ly/python/