Python使用plotly繪制數(shù)據(jù)圖表的方法
導(dǎo)語(yǔ):使用 python-plotly 模塊來(lái)進(jìn)行壓測(cè)數(shù)據(jù)的繪制,并且生成靜態(tài) html 頁(yè)面結(jié)果展示。
不少小伙伴在開發(fā)過程中都有對(duì)模塊進(jìn)行壓測(cè)的經(jīng)歷,壓測(cè)結(jié)束后大家往往喜歡使用Excel處理壓測(cè)數(shù)據(jù)并繪制數(shù)據(jù)可視化視圖,但這樣不能很方便的使用web頁(yè)面進(jìn)行數(shù)據(jù)展示。本文將介紹使用python-plotly模塊來(lái)進(jìn)行壓測(cè)數(shù)據(jù)的繪制,并且生成靜態(tài)html頁(yè)面方便結(jié)果展示。
Plotly簡(jiǎn)介
Plotly是一款使用JavaScript開發(fā)的制圖工具,提供了與主流數(shù)據(jù)分析語(yǔ)言交互的API(如:Python, R, MATLAB)。大家可以到官網(wǎng) https://plot.ly/ 了解更多詳細(xì)的信息。Plotly能夠繪制具有用戶交互功能的精美圖表。
Python-Plotly 安裝
本文檔主要是介紹使用plotly的Python API來(lái)進(jìn)行幾種簡(jiǎn)單圖表的繪制,更多Plotly的用法請(qǐng)參考 https://plot.ly/python/
Python-Plotly可以使用pip安裝,并且最好在Python2.7版本及以上安裝使用,如果使用Python2.6版本,請(qǐng)自行安裝Python2.7和對(duì)應(yīng)的pip。
Plotly繪圖實(shí)例
line-plots
繪圖效果:
生成的html頁(yè)面在右上角提供了豐富的交互工具。
代碼:
def line_plots(name): ''' 繪制普通線圖 ''' #數(shù)據(jù),x為橫坐標(biāo),y,z為縱坐標(biāo)的兩項(xiàng)指標(biāo),三個(gè)array長(zhǎng)度相同 dataset = {'x':[0,1,2,3,4,5,6,7,8,9], 'y':[5,4,1,3,11,2,6,7,19,20], 'z':[12,9,0,0,3,25,8,17,22,5]} data_g = [] #分別插入 y, z tr_x = Scatter( x = dataset['x'], y = dataset['y'], name = 'y' ) data_g.append(tr_x) tr_z = Scatter( x = dataset['x'], y = dataset['z'], name = 'z' ) data_g.append(tr_z) #設(shè)置layout,指定圖表title,x軸和y軸名稱 layout = Layout(title="line plots", xaxis={'title':'x'}, yaxis={'title':'value'}) #將layout設(shè)置到圖表 fig = Figure(data=data_g, layout=layout) #繪圖,輸出路徑為name參數(shù)指定 pltoff.plot(fig, filename=name)
scatter-plots
繪圖效果:
代碼:
def scatter_plots(name): ''' 繪制散點(diǎn)圖 ''' dataset = {'x':[0,1,2,3,4,5,6,7,8,9], 'y':[5,4,1,3,11,2,6,7,19,20], 'text':['5_txt','4_txt','1_txt','3_txt','11_txt','2_txt','6_txt','7_txt','19_txt','20_txt']} data_g = [] tr_x = Scatter( x = dataset['x'], y = dataset['y'], text = dataset['text'], textposition='top center', mode='markers+text', name = 'y' ) data_g.append(tr_x) layout = Layout(title="scatter plots", xaxis={'title':'x'}, yaxis={'title':'value'}) fig = Figure(data=data_g, layout=layout) pltoff.plot(fig, filename=name)
bar-charts
繪圖效果:
代碼:
def bar_charts(name): ''' 繪制柱狀圖 ''' dataset = {'x':['Windows', 'Linux', 'Unix', 'MacOS'], 'y1':[45, 26, 37, 13], 'y2':[19, 27, 33, 21]} data_g = [] tr_y1 = Bar( x = dataset['x'], y = dataset['y1'], name = 'v1' ) data_g.append(tr_y1) tr_y2 = Bar( x = dataset['x'], y = dataset['y2'], name = 'v2' ) data_g.append(tr_y2) layout = Layout(title="bar charts", xaxis={'title':'x'}, yaxis={'title':'value'}) fig = Figure(data=data_g, layout=layout) pltoff.plot(fig, filename=name)
pie-charts
繪圖效果:
代碼:
def pie_charts(name): ''' 繪制餅圖 ''' dataset = {'labels':['Windows', 'Linux', 'Unix', 'MacOS', 'Android', 'iOS'], 'values':[280, 25, 10, 100, 250, 270]} data_g = [] tr_p = Pie( labels = dataset['labels'], values = dataset['values'] ) data_g.append(tr_p) layout = Layout(title="pie charts") fig = Figure(data=data_g, layout=layout) pltoff.plot(fig, filename=name)
filled-area-plots
本例是繪制具有填充效果的堆疊線圖,適合分析具有堆疊百分比屬性的數(shù)據(jù)
繪圖效果:
代碼:
def filled_area_plots(name): ''' 繪制堆疊填充的線圖 ''' dataset = {'x':[0,1,2,3,4,5,6,7,8,9], 'y1':[5,4,1,3,11,2,6,7,19,20], 'y2':[12,9,0,0,3,25,8,17,22,5], 'y3':[13,22,46,1,15,4,18,11,17,20]} #計(jì)算y1,y2,y3的堆疊占比 dataset['y1_stack'] = dataset['y1'] dataset['y2_stack'] = [y1+y2 for y1, y2 in zip(dataset['y1'], dataset['y2'])] dataset['y3_stack'] = [y1+y2+y3 for y1, y2, y3 in zip(dataset['y1'], dataset['y2'], dataset['y3'])] dataset['y1_text'] = ['%s(%s%%)'%(y1, y1*100/y3_s) for y1, y3_s in zip(dataset['y1'], dataset['y3_stack'])] dataset['y2_text'] = ['%s(%s%%)'%(y2, y2*100/y3_s) for y2, y3_s in zip(dataset['y2'], dataset['y3_stack'])] dataset['y3_text'] = ['%s(%s%%)'%(y3, y3*100/y3_s) for y3, y3_s in zip(dataset['y3'], dataset['y3_stack'])] data_g = [] tr_1 = Scatter( x = dataset['x'], y = dataset['y1_stack'], text = dataset['y1_text'], hoverinfo = 'x+text', mode = 'lines', name = 'y1', fill = 'tozeroy' #填充方式: 到x軸 ) data_g.append(tr_1) tr_2 = Scatter( x = dataset['x'], y = dataset['y2_stack'], text = dataset['y2_text'], hoverinfo = 'x+text', mode = 'lines', name = 'y2', fill = 'tonexty' #填充方式:到下方的另一條線 ) data_g.append(tr_2) tr_3 = Scatter( x = dataset['x'], y = dataset['y3_stack'], text = dataset['y3_text'], hoverinfo = 'x+text', mode = 'lines', name = 'y3', fill = 'tonexty' ) data_g.append(tr_3) layout = Layout(title="field area plots", xaxis={'title':'x'}, yaxis={'title':'value'}) fig = Figure(data=data_g, layout=layout) pltoff.plot(fig, filename=name)
小結(jié)
本文介紹了利用python-plotly繪制數(shù)據(jù)圖的方法,實(shí)例中 線圖(line plots)、散點(diǎn)圖(scatter plots)、柱狀圖(bar charts)、餅圖(pie charts)以及填充堆疊線圖(filled area plots)這五種典型的圖表基本上涵蓋了大部分類型的測(cè)試數(shù)據(jù),各位小伙伴可以加以變形繪制出更多的漂亮圖標(biāo)。
文中所示代碼:test_plotly_jb51.rar
參考資料
1. https://plot.ly/python/basic-charts/
2. https://images.plot.ly/plotly-documentation/images/python_cheat_sheet.pdf
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python使用pynput捕獲單個(gè)按鍵的步驟詳解(包括組合鍵和功能鍵)
在數(shù)字時(shí)代,鍵盤是與計(jì)算機(jī)交流的主要工具,鍵盤的每一次敲擊都承載著信息,而在某些場(chǎng)景下,可能需要記錄這些信息,這時(shí)候,pynput庫(kù)就派上了大用場(chǎng),它可以輕松地幫捕獲并記錄鍵盤上的每一個(gè)操作,所以本文給大家介紹了python使用pynput捕獲鍵的操作步驟2024-05-05pandas中對(duì)文本類型數(shù)據(jù)的處理小結(jié)
這篇文章主要介紹了pandas中對(duì)于文本類型數(shù)據(jù)的處理匯總,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11解決selenium模塊利用performance獲取network日志請(qǐng)求報(bào)錯(cuò)的問題(親測(cè)有效)
這篇文章主要介紹了解決selenium模塊利用performance獲取network日志請(qǐng)求報(bào)錯(cuò)的問題(親測(cè)有效),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03python 存儲(chǔ)json數(shù)據(jù)的操作
這篇文章主要介紹了python 存儲(chǔ)json數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-05-05django從請(qǐng)求到響應(yīng)的過程深入講解
這篇文章主要給大家介紹了關(guān)于django從請(qǐng)求到響應(yīng)的過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08Python中的http.server庫(kù)用法詳細(xì)介紹
這篇文章主要給大家介紹了關(guān)于Python中http.server庫(kù)用法的相關(guān)資料,http.server是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于創(chuàng)建基本的HTTP服務(wù)器,它提供了處理HTTP請(qǐng)求的基本框架和核心類,需要的朋友可以參考下2024-11-11使用Python將Mysql的查詢數(shù)據(jù)導(dǎo)出到文件的方法
今天小編就為大家分享一篇關(guān)于使用Python將Mysql的查詢數(shù)據(jù)導(dǎo)出到文件的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02