日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
你知道怎么選可視化工具嗎?深度評測5大Python數(shù)據(jù)可視化工具

相信很多讀者都聽過 Matplotlib 、 Pyecharts 、 Seaborn 、 Plotly 、 Bokeh 這五大工具,學(xué)習(xí)Python就是希望做出各種酷炫的可視化圖表,本文就將通過真實(shí)繪圖來深度評測這五個Python數(shù)據(jù)可視化的庫, 看看到底這幾種工具各有什么優(yōu)缺點(diǎn),在制作圖表時該如何選擇。

十年的海曙網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整海曙建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“海曙網(wǎng)站設(shè)計(jì)”,“海曙網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

指標(biāo)說明

為了更清晰的了解這幾款用于可視化的Python在作圖時的異同,本文將使用 同一組數(shù)據(jù) 分別制作多系列條形圖來對比,主要將通過以下幾個指標(biāo)來進(jìn)行評測:

數(shù)據(jù)說明

本文使用的數(shù)據(jù)為Pyecharts中的faker數(shù)據(jù)

 
 
 
  1. from pyecharts.faker import Faker 
  2. x = Faker.choose() 
  3. y1 = Faker.values() 
  4. y2 = Faker.values() 

x為一列品牌名稱,y1/y2為一列相同長度的 無意義 數(shù)據(jù),接下來讓我們使用不同的庫對這組數(shù)據(jù)進(jìn)行可視化!

Pyecharts

Echarts 是一個由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開發(fā)者的認(rèn)可。而Python是一門富有表達(dá)力的語言,很適合用于數(shù)據(jù)處理。當(dāng)數(shù)據(jù)分析遇上數(shù)據(jù)可視化時, pyecharts 誕生了,支持 30+ 種圖表 。 在pyecharts中制作條形圖首先需要導(dǎo)入相關(guān)庫

 
 
 
  1. from pyecharts import options as opts 
  2. from pyecharts.charts import Bar 

接著是繪圖并不做任何任何調(diào)整,首先創(chuàng)建一個Bar實(shí)例,接著添加x軸y軸數(shù)據(jù),注意 僅接收list格式 數(shù)據(jù),最后添加標(biāo)題并設(shè)置在notebook中直接展示??傮w來說還是比較符合正常的作圖邏輯,整體 代碼量并不多 。

 
 
 
  1. c = ( 
  2.     Bar() 
  3.     .add_xaxis(x) 
  4.     .add_yaxis("商家A", y1) 
  5.     .add_yaxis("商家B", y2) 
  6.     .set_global_opts(title_opts=opts.TitleOpts(title="Pyecharts—柱狀圖", subtitle="")) 
  7. ).render_notebook() 

默認(rèn)生成的兩系列柱狀圖如下:

可以看到,該圖 支持交互式 展示與點(diǎn)擊,默認(rèn)生成的樣式也較為美觀,并且Pyecharts有詳細(xì)的中文文檔與demo,網(wǎng)上關(guān)于Pyecharts的討論也較多,如果是剛接觸的讀者也能比較快的上手。 當(dāng)然如果對默認(rèn)樣式不滿意的話,可以進(jìn)行一些調(diào)整,由于 文檔十分完整 ,所以代碼修改起來并不困難,比如可以修改主題并設(shè)置一些標(biāo) 記線、DataZoom,添加小組件等

總體來說,由于Pyecharts是基于Echarts制作的,因此生成圖表比較美觀,并且 官方中文文檔對相關(guān)設(shè)置講解非常詳細(xì),有關(guān)Pyecharts的 討論也非常多 ,所以如果在使用過程中有相關(guān)疑問也很容易通過檢索找到答案,但遺憾的是不支持使用pandas中的series數(shù)據(jù),需要 轉(zhuǎn)換為list 才可以使用,不過整體還是讓我很滿意的一款可視化庫。主觀評分: 85 

Matplotlib

Matplotlib 應(yīng)該是最廣泛使用的Python可視化工具,支持的圖形種類非常多,使用Matplotlib制作相同效果的圖需要先導(dǎo)入相關(guān)庫,并且并不支持原生中文所以還要設(shè)置下中文顯示

 
 
 
  1. import matplotlib.pyplot as plt 
  2. import numpy as np 
  3. plt.rcParams['font.sans-serif'] = ['SimHei']  

接著就是繪圖,但是相比較于pyecharts大多是往寫好的代碼里面添加數(shù)據(jù)、配置不同,matplotlib大多數(shù)需要我們自己寫代碼,所以 代碼量可能稍多一點(diǎn)

 
 
 
  1. width = 0.35 
  2. x1 = np.arange(len(x))  
  3.  
  4. fig, ax = plt.subplots() 
  5. rects1 = ax.bar(x1 - width/2, y1, width, label='商家A') 
  6. rects2 = ax.bar(x1 + width/2, y2, width, label='商家B') 
  7.  
  8. ax.set_title('Matplotlib—柱狀圖') 
  9. ax.set_xticks(x1) 
  10. ax.set_xticklabels(x) 
  11. ax.legend() 
  12.  
  13. plt.show() 

最后生成的默認(rèn)圖像如下

默認(rèn)配色不是很好看但也沒有很難看,看起來更學(xué)術(shù)一點(diǎn),但是 不支持交互式 點(diǎn)擊查看等操作,雖然代碼量更多一點(diǎn),但是由于Matplotlib的火熱, 網(wǎng)上關(guān)于matplotlib的資料比Pyecharts要多很多 ,所以寫代碼與調(diào)整代碼的過程也 并不復(fù)雜 ,整體主觀評分77分

Plotly

Plotly 也是一款非常強(qiáng)大的Python可視化庫, Plotly內(nèi)置完整的交互能力及編輯工具,支持在線和離線模式,提供穩(wěn)定的API以便于現(xiàn)有應(yīng)用集成,既可以在web瀏覽器中展示數(shù)據(jù)圖表,也可以存入本地拷貝 。 但是由于官方 未提供中文文檔 ,網(wǎng)上關(guān)于Plotly的教程也僅限于官方的一些demo,對于一些詳細(xì)的參數(shù)設(shè)置并 沒有太多資料 ,首先還是先導(dǎo)入相關(guān)庫并設(shè)置notebook顯示

 
 
 
  1. import plotly 
  2. import plotly.offline as py 
  3. import plotly.graph_objs as go 
  4. plotly.offline.init_notebook_mode(connected=True) 

接下來是繪圖代碼, 首先要對數(shù)據(jù)先進(jìn)行處理 ,剩下的基礎(chǔ)配置其實(shí)和Pyecharts比較類似

 
 
 
  1. trace0 = go.Bar( 
  2.     x = x, 
  3.     y = y1, 
  4.     name = '商家A', 
  5. trace1 = go.Bar( 
  6.     x = x, 
  7.     y = y2, 
  8.     name = '商家B', 
  9. data = [trace0,trace1] 
  10. layout = go.Layout( 
  11.         title={ 
  12.         'text': "Plotly-柱狀圖", 
  13.         'y':0.9, 
  14.         'x':0.5, 
  15.         'xanchor': 'center', 
  16.         'yanchor': 'top'}) 
  17. fig = go.Figure(data=data, layout=layout) 
  18. py.iplot(fig) 

默認(rèn)樣式生成的圖如上, 配色也不難看 ,并且可以看到是 支持交互式 操作的,同時是默認(rèn)添加toolbox小組件,可以更方便的查看, 支持30多種圖形 ,總體來說還是比較優(yōu)秀的一個可視化工具,但是如果真要熟練使用的話可能需要一點(diǎn)時間用于查找相關(guān)資料,因?yàn)榫W(wǎng)上 關(guān)于Plotly的資料不多 ,大多是基本使用的簡單教程,如果想查找一些細(xì)節(jié)的操作比如我為了查找讓標(biāo)題居中的方法,百度之后用Google在國外某論壇找到類似問題并找到設(shè)置,主觀評分: 76 

Bokeh

Bokeh 是一個專門針對Web瀏覽器的呈現(xiàn)功能的 交互式 可視化Python庫。這是Bokeh與其它可視化庫最核心的區(qū)別,它可以做出像 D3.js 簡潔 漂亮的交互可視化效果,但是使用難度低于D3.js,首先還是導(dǎo)入相關(guān)庫

 
 
 
  1. from bokeh.transform import dodge 
  2. import pandas as pd 
  3. from bokeh.core.properties import value 
  4. import numpy as np 
  5. import matplotlib.pyplot as plt 
  6. %matplotlib inline 
  7. from bokeh.io import output_notebook 
  8. output_notebook() # 導(dǎo)入notebook繪圖模塊 
  9. from bokeh.plotting import figure,show 
  10. from bokeh.models import ColumnDataSource# 導(dǎo)入圖表繪制、圖標(biāo)展示模塊 # 導(dǎo)入ColumnDataSource模塊 # 導(dǎo)入dodge、value模塊 

相關(guān)依賴比上面三個要多出很多,并且Bokeh有自己的數(shù)據(jù)結(jié)構(gòu) ColumnDataSource ,所以要先對數(shù)據(jù)進(jìn)行轉(zhuǎn)換,接著就是創(chuàng)建畫布、添加數(shù)據(jù)及設(shè)置

 
 
 
  1. df = pd.DataFrame({'商家A':y1,'商家B':y2}, 
  2.                  index = x_) 
  3. _x = ['商家A','商家B']    # 系列名 
  4. data = {'index':x_} 
  5. for i in _x: 
  6.     data[i] = df[i].tolist()# 生成數(shù)據(jù),數(shù)據(jù)格式為dict 
  7. source = ColumnDataSource(data=data)# 將數(shù)據(jù)轉(zhuǎn)化為ColumnDataSource對象 
  8.  
  9. p = figure(x_range=x_, y_range=(0, 150), plot_height=350, title="boken-柱狀圖",tools="crosshair,pan,wheel_zoom,box_zoom,reset,box_select,lasso_select") 
  10.  
  11. p.vbar(x=dodge('index', -0.1, range=p.x_range), top='商家A', width=0.2, source=source,color="#718dbf", legend=value("商家A")) 
  12. p.vbar(x=dodge('index',  0.1, range=p.x_range), top='商家B', width=0.2, source=source,color="#e84d60", legend=value("商家B"))# dodge(field_name, value, range=None) → 轉(zhuǎn)換成一個可分組的對象,value為元素的位置(配合width設(shè)置) 
  13. p.xgrid.grid_line_color = None 
  14. p.legend.location = "top_left" 
  15. p.legend.orientation = "horizontal" # 其他參數(shù)設(shè)置 
  16. show(p) 

可以看到,Bokeh做出來的圖也是 支持交互 的,不并且樣式之類的看上去還是比較舒服的,不過上面這張圖是經(jīng)過調(diào)整顏色的,因?yàn)槟J(rèn)不對兩個系列進(jìn)行區(qū)分顏色

Bokeh一個很明顯的特點(diǎn)就是 代碼量較上面三個工具要多了很多 ,大多是在 數(shù)據(jù)的處理 上,并且和Plotly一樣,有關(guān)bokeh相關(guān)的 中文資料也不多 ,大多是入門型的基本使用于介紹,雖然從官方給出的圖來看能作出很多比pyecharts更精美的圖,但是查找相關(guān)參數(shù)的設(shè)置上將會耗費(fèi)一定時間,主觀評分 71 分。

Seaborn

從 seaborn 官網(wǎng)給出的標(biāo)題就知道,seaborn是為了 統(tǒng)計(jì)圖表 設(shè)計(jì)的,它 是一種 基于matplotlib 的圖形可視化庫,也就 是在matplotlib的基礎(chǔ)上進(jìn)行了更高級的API封裝,從而使得 作圖更加容易 ,在大多數(shù)情況下使用seaborn就能做出很具有吸引力的圖,而使用matplotlib就能制作具有更多特色的圖,還是我們的數(shù)據(jù),使用Seaborn制作首先需要導(dǎo)入相關(guān)庫,由于是基于Matplotlib,所以還是 需要設(shè)置中文

 
 
 
  1. import seaborn as sns 
  2. import matplotlib.pyplot as plt 
  3. plt.rcParams['font.sans-serif'] = ['SimHei']  

接下來只要 一行代碼 就能生成我們要的圖,默認(rèn)配色也沒有顯得很難看

相比上面四種工具,從 代碼量 上來看是非常簡潔的,不過還是要先將 數(shù)據(jù)轉(zhuǎn)換 為DataFrame格式,這里沒在代碼中體現(xiàn),但依舊是 最簡短的代碼 ,同時并不支持交互。并且Seaborn和Plotly、bokeh有一個共同的地方就是雖然強(qiáng)大,但是 網(wǎng)上有關(guān)這三個庫的教程、討論都遠(yuǎn)少于Pyecharts與Matplotlib ,如果是新手的話可能很難快速通過搜索解決你遇到的問題,而需要自己研究別人的代碼,主觀評分 72 

小結(jié)

以上就是對常見的5個Python數(shù)據(jù)可視化的評測,可能通過繪制條形圖的方式去給每個工具打分不是非常合適,但我想你應(yīng)該能夠大致熟悉到每個庫在繪圖時的特點(diǎn),同時也能在選擇這些工具之前有一個簡單的了解。最后正如我們文中介紹的一樣, 不同工具的應(yīng)用場景、目標(biāo)用戶都不完全相同 ,所以我們在選擇工具時需要 先思考自己的使用場景 ,并且需要評估繪制目標(biāo)圖形的難度,就像有些工具雖然強(qiáng)大但是資料太少,不要為了追求高級的樣式而浪費(fèi)太多時間!如果你仍在猶豫學(xué)習(xí)哪一個工具的話,我的意見是 :熟練掌握一個工具之后,了解其他工具即可 !


網(wǎng)站名稱:你知道怎么選可視化工具嗎?深度評測5大Python數(shù)據(jù)可視化工具
鏈接URL:http://www.dlmjj.cn/article/dpsghcs.html