可視化工具不知道怎麼選?深度評測5大Python數據可視化工具

2020-12-15 CSDN

作者 | 劉早起

來源 | 早起Python(ID: zaoqi-python)

相信很多讀者學習Python就是希望作出各種酷炫的可視化圖表,當然你一定會聽說過Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點,在製作圖表時該如何選擇。

指標說明

為了更清晰的了解這幾款用於可視化的Python在作圖時的異同,本文將使用同一組數據分別製作多系列條形圖來對比,主要將通過以下幾個指標來進行評測:

數據說明

本文使用的數據為Pyecharts中的faker數據

frompyecharts.fakerimportFakerx = Faker.choose()y1 = Faker.values()y2 = Faker.values()

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

Pyecharts

Echarts是一個由百度開源的數據可視化,憑藉著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而Python是一門富有表達力的語言,很適合用於數據處理。當數據分析遇上數據可視化時,pyecharts 誕生了,支持30+種圖表。在pyecharts中製作條形圖首先需要導入相關庫

frompyechartsimportoptionsasoptsfrompyecharts.chartsimportBar

接著是繪圖並不做任何任何調整,首先創建一個Bar實例,接著添加x軸y軸數據,注意僅接收list格式數據,最後添加標題並設置在notebook中直接展示。總體來說還是比較符合正常的作圖邏輯,整體代碼量並不多

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

默認生成的兩系列柱狀圖如下:

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

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

Matplotlib

Matplotlib應該是最廣泛使用的Python可視化工具,支持的圖形種類非常多,使用Matplotlib製作相同效果的圖需要先導入相關庫,並且並不支持原生中文所以還要設置下中文顯示

import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']

接著就是繪圖,但是相比較於pyecharts大多是往寫好的代碼裡面添加數據、配置不同,matplotlib大多數需要我們自己寫代碼,所以代碼量可能稍多一點

width = 0.35x1 = np.arange(len(x)) fig, ax = plt.subplots()rects1 = ax.bar(x1 - width/2, y1, width, label='商家A')rects2 = ax.bar(x1 + width/2, y2, width, label='商家B')ax.set_title('Matplotlib—柱狀圖')ax.set_xticks(x1)ax.set_xticklabels(x)ax.legend()plt.show()

最後生成的默認圖像如下

默認配色不是很好看但也沒有很難看,看起來更學術一點,但是不支持交互式點擊查看等操作,雖然代碼量更多一點,但是由於Matplotlib的火熱,網上關於matplotlib的資料比Pyecharts要多很多,所以寫代碼於調整代碼的過程也並不複雜,整體主觀評分77分

Plotly

Plotly也是一款非常強大的Python可視化庫,Plotly內置完整的交互能力及編輯工具,支持在線和離線模式,提供穩定的API以便與現有應用集成,既可以在web瀏覽器中展示數據圖表,也可以存入本地拷貝。但是由於官方未提供中文文檔,網上關於Plotly的教程也僅限於官方的一些demo,對於一些詳細的參數設置並沒有太多資料,首先還是先導入相關庫並設置notebook顯示

import plotlyimport plotly.offline as pyimport plotly.graph_objs as goplotly.offline.init_notebook_mode(connected=True)

接下來是繪圖代碼,首先要對數據先進行處理,剩下的基礎配置其實和Pyecharts比較類似

trace0 = go.Bar( x = x, y = y1, name = '商家A',)trace1 = go.Bar( x = x, y = y2, name = '商家B',)data = [trace0,trace1]layout = go.Layout( title={'text': "Plotly-柱狀圖",'y':0.9,'x':0.5,'xanchor': 'center','yanchor': 'top'})fig = go.Figure(data=data, layout=layout)py.iplot(fig)

默認樣式生成的圖如上,配色也不難看,並且可以看到是支持交互式操作的,同時是默認添加toolbox小組件,可以更方便的查看,支持30多種圖形,總體來說還是比較優秀的一個可視化工具,但是如果真要熟練使用的話可能需要一點時間用於查找相關資料,因為網上關於Plotly的資料不多,大多是基本使用的簡單教程,如果想查找一些細節的操作比如我為了查找讓標題居中的方法,百度之後用Google在國外某論壇找到類似問題並找到設置,主觀評分:76

Bokeh

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

from bokeh.transform import dodgeimport pandas as pdfrom bokeh.core.properties import valueimport numpy as npimport matplotlib.pyplot as plt%matplotlib inlinefrom bokeh.io import output_notebookoutput_notebook() # 導入notebook繪圖模塊from bokeh.plotting import figure,showfrom bokeh.models import ColumnDataSource# 導入圖表繪製、圖標展示模塊 # 導入ColumnDataSource模塊 # 導入dodge、value模塊

相關依賴比上面三個要多出很多,並且Bokeh有自己的數據結構ColumnDataSource,所以要先對數據進行轉換,接著就是創建畫布、添加數據及設置

df = pd.DataFrame({'商家A':y1,'商家B':y2}, index = x_)_x = ['商家A','商家B'] # 系列名data = {'index':x_}for i in _x: data[i] = df[i].tolist()# 生成數據,數據格式為dictsource = ColumnDataSource(data=data)# 將數據轉化為ColumnDataSource對象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")p.vbar(x=dodge('index', -0.1, range=p.x_range), top='商家A', width=0.2, source=source,color="#718dbf", legend=value("商家A"))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) → 轉換成一個可分組的對象,value為元素的位置(配合width設置)p.xgrid.grid_line_color = Nonep.legend.location = "top_left"p.legend.orientation = "horizontal"# 其他參數設置show(p)

可以看到,Bokeh做出來的圖也是支持交互的,不並且樣式之類的看上去還是比較舒服的,不過上面這張圖是經過調整顏色的,因為默認不對兩個系列進行區分顏色

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

Seaborn

從seaborn官網給出的標題就知道,seaborn是為了統計圖表設計的,它是一種基於matplotlib的圖形可視化庫,也就是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn就能做出很具有吸引力的圖,而使用matplotlib就能製作具有更多特色的圖,還是我們的數據,使用Seaborn製作首先需要導入相關庫,由於是基於Matplotlib,所以還是需要設置中文

import seaborn as snsimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']

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

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

小結

以上就是對常見的5個Python數據可視化的評測,可能通過繪製條形圖的方式去給每個工具打分不是非常合適,但我想你應該能夠大致熟悉到每個庫在繪圖時的特點,同時也能在選擇這些工具之前有一個簡單的了解。最後正如我們文中介紹的一樣,不同工具的應用場景、目標用戶都不完全相同,所以我們在選擇工具時需要先思考自己的使用場景,並且需要評估繪製目標圖形的難度,就像有些工具雖然強大但是資料太少,不要為了追求高級的樣式而浪費太多時間!

如果你仍在猶豫學習哪一個工具的話,我的意見是:熟練掌握一個工具之後,了解其他工具即可!最後留一個彩蛋,大家可以猜一猜文中的雷達圖是使用文中提到的哪一款工具製作?

相關焦點

  • Python數據可視化工具怎麼選?深度評測5款實用工具
    、Pyecharts、seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點,在製作圖表時該如何選擇。為了更清晰的了解這幾款用於可視化的Python在作圖時的異同,本文將使用同一組數據分別製作多系列條形圖來對比,主要將通過以下幾個指標來進行評測:本文使用的數據為Pyecharts中的faker數據:from pyecharts.faker import Fakerx = Faker.choose()y1 = Faker.values
  • ​Python數據可視化工具怎麼選?深度評測5款實用工具
    Python五大數據可視化庫。[ 導讀 ]相信很多讀者學習Python就是希望做出各種酷炫的可視化圖表,當然你一定會聽說過Matplotlib、Pyecharts、seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點,在製作圖表時該如何選擇。
  • 深度評測5大Python數據可視化工具
    >Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點,在製作圖表時該如何選擇。
  • 選對數據可視化工具就成功了一半
    大數據時代,數據為王,還在對一堆數據而發愁嗎?試試可視化工具吧,讓眾多數據生動躍於紙上。不過效率確實不咋地。而且繪製一個這樣的圖需要花費很長時間(別問我是怎麼知道的)。值得慶幸的是,大量的開源數據可視化工具能夠從空間和表格中獲取到獨特數據,並通過使用高級圖形和圖表向用戶呈現信息。數據可視化工具出來了,一個有效的數據可視化工具可以讓你的數據分析效果事半功倍!對於不會寫代碼的你,敏捷BI將會是一個非常好的選擇。敏捷BI作為一個自助式分析工具。我們先用豌豆BI舉例子吧!
  • Python的可視化工具概述
    介紹本文引用地址:http://www.eepw.com.cn/article/201807/383756.htm在Python世界中,有大量數據可視化的選項.因為各種各樣,要知道什麼時候使用哪個是非常困難的.本文包含一些較為流行的樣例,並說明如果使用其創建簡單的條形圖.我會使用以下包/工具創建繪圖例子:PandasSeaborn
  • 數據可視化工具大集合
    所謂數據可視化是對大型資料庫或數據倉庫中的數據的可視化,它是可視化技術在非空間數據領域的應用,使人們不再局限於通過關係數據表來觀察和分析數據信息
  • 39個大數據可視化工具
    無論是在行政演示中為數據點創建一個可視化進程,還是用可視化概念來細分客戶,數據可視化都顯得尤為重要。以前的工具的基本不能處理大數據。本文將推薦39個可用於處理大數據的可視化工具(排名不分先後)。其中許多工具是開源的,能夠共同使用或嵌入已經設計好的應用程式中使用,例如JavaScript,JSON,SVG,Python,HTML5,甚至有些工具不需要任何程式語言基礎。
  • 20大數據可視化工具測評,一定有你不知道的「寶藏」工具
    PLoB | 來源如今學習應用數據可視化的渠道有很多,你可以跟蹤一些專家博客,但更重要的一點是實踐/實操,你必須對目前可用的數據可視化工具有個大致了解。以下是Netmagzine列舉的二十大數據可視化工具,無論你是準備製作簡單的圖表還是複雜的圖譜或者信息圖,這些工具都能滿足你的需要。
  • 大數據可視化分析工具常用的有哪些?
    大數據可視化分析工具常用的有哪些?企業基礎數據才能制定出正確的策略,常用的分析工具有、Tableau、ECharts、Highcharts、魔鏡、圖表秀等。在大數據時代有價值的商品則是數據,大數據技術為決策提供依據,在政府、企業、科研項目等決策中扮演著重要的角色。
  • 55 個實用大數據可視化分析工具
    ,而不是單個數據科學家、設計師或數據分析員;我們更需要重新思考我們所知道的數據可視化,圖表和圖形還只能在一個或兩個維度上傳遞信息, 那麼他們怎樣才能與其他維度融合到一起深入挖掘大數據呢?Weka是一個能根據屬性分類和集群大量數據的優秀工具,Weka不但是數據分析的強大工具,還能生成一些簡單的圖表。NodeBox是OS X上創建二維圖形和可視化的應用程式,你需要了解Python程序,NodeBox與Processing類似,但沒有Processing的互動功能。
  • 55 個實用的大數據可視化分析工具
    一款好的工具可以讓你事半功倍,尤其是在大數據時代,更需要強有力的工具通過使數據有意義的方式實現數據可視化,還有數據的可交互性;我們還需要跨學科的團隊,而不是單個數據科學家、設計師或數據分析員;我們更需要重新思考我們所知道的數據可視化,圖表和圖形還只能在一個或兩個維度上傳遞信息, 那麼他們怎樣才能與其他維度融合到一起深入挖掘大數據呢?此時就需要倚仗大數據可視化(BDV)工具。
  • 【Python教程】用Python進行數據可視化
    當數據發生變化時,這種演變過程隨之發生。通過離散算法      數據的種類不同,包括表現數據, 實驗數據,基準數據2.2 可視化的思路和工具可視化的整個過程需要不用技能和專業領域的人。一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展Seaborn:是一個基於matplotlib的高級可視化效果庫,針對的點主要是數據挖掘和機器學習中的變量特徵選取,seaborn可以用短小的代碼去繪製描述更多維度數據的可視化效果圖Plotly:繪圖工具,是建立在一個開放源碼庫plotly.js上,由一家擁有多種產品和開源工具的
  • Top 7大開源數據可視化分析工具!
    Top 7大開源數據可視化分析工具! Top 7大開源數據可視化分析工具!在所有工具中,Gephi一直以來被認為是最值得推薦的,它可以幫助用戶輕鬆實現超過十萬個節點的可視化。但是,除了Gephi,還有很多免費開源工具可供選擇,本文列出了頂級的七大數據可視化分析工具,可幫助企業分析並梳理數據之間的關係。
  • 20個最佳大數據可視化工具概覽
    作者:Edoardo L』Astorina以下我們選出的大數據可視化的20個最好的工具。數據可視化之初級篇—零編程工具1.Tableau 是一款企業級的大數據可視化工具。Tableau 可以讓你輕鬆創建圖形,表格和地圖。 它不僅提供了PC桌面版,還提供了伺服器解決方案,可以讓您在線生成可視化報告。伺服器解決方案可以提供了雲託管服務。
  • 數據可視化工具的特點有哪些
    導讀 數據可視化使用的越來越廣泛,已經成為企業和機構迅速取勝的法寶,推動各行業可視化、智能化升級轉變。
  • Python的數據可視化:對比7種工具包
    Python 的scientific stack(一個介紹Python科學計算包的網站)已經完全成熟,並且有各種各樣用例的庫,包括機器學習(連結:machine learning),數據分析(連結:data analysis)。數據可視化是探索數據和清晰的解釋結果很重要的一部分,但是Python在過去卻相對於其他工具比如R落後一點。
  • 2014年20大數據可視化工具及資料
    巴西的新聞網站Visualoop,這是一家匯集來自網際網路的信息圖表和數據為中心的可視化網站,今年,他們繼續評選出這一年最優秀的大數據可視化相關工具。「我們很艱難的選出這20個新的平臺或工具—如果你是我們每周數據新聞報導的忠實讀者,你可能記得我們列表中的幾個。」在這個榜單中他們忽略了新的版本和現有工具的更新,例如:CartoDB, Mapbox, Tableau, D3.js, RAW, Infogr.am 等等。下面,就是2014年Visualoop從他們的報導中提取的20大可視化工具和資料。
  • 11款可視化大數據分析工具優缺點對比
  • 實用的數據可視化工具大集合!
    AntVAntV又是螞蟻金服出品(阿里系)的一套數據可視化語法,貌似是國內第一個採用The grammar Of Graphics這套理論的可視化庫。antv帶有一系列的數據處理API,簡單數據的數據歸類,分析的能力,被很多大公司用作自己BI平臺的底層工具。
  • 玩轉大數據可視化,推薦幾個必學的工具!
    如何利用大數據可視化,如何做好大數據可視化,今天就給大家介紹一些實用的工具,有圖表庫、有BI ......企業使用這個工具非常方便,而且提供了閃電般的速度。還有一件事對這個工具是肯定的,Tableau具有用戶友好的特性,並與拖放功能兼容。但是在大數據方面的性能有所缺陷,每次都是實時查詢數據,如果數據量大,會卡頓。