自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

開發(fā) 后端 數(shù)據(jù)可視化
也許你是想在演示中給人留下深刻印象?在這篇文章中,我將介紹一些流行的Python可視化包,它們的優(yōu)缺點(diǎn),以及它們各自的優(yōu)點(diǎn)。

前言

使用Python創(chuàng)建圖形的方法有很多,但是哪種方法最好呢?當(dāng)我們進(jìn)行可視化時,問一些關(guān)于圖形目標(biāo)的問題是很重要的:您是否試圖對數(shù)據(jù)的外觀有一個初步的感覺?也許你是想在演示中給人留下深刻印象?在這篇文章中,我將介紹一些流行的Python可視化包,它們的優(yōu)缺點(diǎn),以及它們各自的優(yōu)點(diǎn)。

Matplotlib, Seaborn, and Pandas:

我將出于幾個原因?qū)⑺鼈兘M合在一起,首先是Seaborn和Pandas繪圖是建立在Matplotlib之上的——當(dāng)你在panda中使用Seaborn或df.plot()時,你實(shí)際上是在利用Matplotlib編寫的代碼。因此,每一種方法產(chǎn)生的美感都是相似的,定制圖片的方法將使用非常相似的語法。

當(dāng)我想到這些可視化工具時,我想到:探索性數(shù)據(jù)分析。這些包對于第一次查看您的數(shù)據(jù)是非常棒的,但是當(dāng)涉及到表示時就不太好了。Matplotlib還有一組樣式選擇,它們模仿其他流行的美學(xué),比如ggplot2和xkcd。下面是一些使用Matplotlib和它的近親制作的圖的例子:

在處理籃球薪資數(shù)據(jù)時,我希望找到擁有最高薪資中位數(shù)數(shù)據(jù)的球隊(duì)。為了說明這一點(diǎn),我用顏色編碼了一個柱狀圖,下面是每支球隊(duì)的工資,以顯示球員應(yīng)該去哪支球隊(duì),這樣才能加入薪酬高的球隊(duì)。

  1. import seaborn as snsimport matplotlib.pyplot as pltcolor_order =  
  2. ['xkcd:cerulean''xkcd:ocean',     'xkcd:black','xkcd:royal purple'
  3.       'xkcd:royal purple''xkcd:navy blue',      'xkcd:powder blue'
  4.  'xkcd:light maroon',   'xkcd:lightish  
  5. blue','xkcd:navy']sns.barplot(x=top10.Team,  y=top10.Salary,  
  6. palette=color_order).set_title('   Teams with Highest Median  
  7. Salary')plt.ticklabel_format(style='sci', axis='y',        scilimits=(0,0)) 

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

接下來是回歸實(shí)驗(yàn)殘差的Q-Q圖。這種可視化的主要目的是顯示我們可以用很少的代碼顯示比較完整的圖片。

  1. import matplotlib.pyplot as pltimport scipy.stats as stats#model2 is  
  2. a regression modellog_resid = model2.predict(X_test)- 
  3. y_teststats.probplot(log_resid, dist="norm",  
  4. plot=plt)plt.title("Normal Q-Q plot")plt.show() 

 Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

最終,Matplotlib和它的相關(guān)組件非常高效,但就演示而言,它們通常不是最終產(chǎn)品。

ggplot(2)

ggplot是最流行的R可視化軟件包。這不是一個Python包評審嗎?你可能會問。開發(fā)人員用Python實(shí)現(xiàn)了ggplot2,復(fù)制了從美學(xué)到語法的所有內(nèi)容。從我所見過的所有材料來看,它的外觀和感覺都很像ggplot2,但是還有一個額外的好處,它依賴于pandas Python包,該包最近棄用了一些方法,導(dǎo)致ggplot的Python版本變得無關(guān)。如果您想在R中使用真正的ggplot(它具有所有相同的外觀、感覺和語法,沒有依賴項(xiàng)),我將在這里討論它的一些額外功能!也就是說,如果您確實(shí)必須在Python中使用ggplot,那么您必須安裝pandas版本0.19.2,但是我要提醒您不要降低您的pandas的級別,這樣您就可以使用一個較差的繪圖包。

使ggplot2(我猜還有Python的ggplot)改變游戲規(guī)則的是,它們使用“圖形語法”來構(gòu)造圖形。基本的前提是,您可以實(shí)例化您的圖片,然后分別添加不同的功能,即標(biāo)題、軸、數(shù)據(jù)點(diǎn)和趨勢線都是單獨(dú)添加的,具有各自的美學(xué)屬性。下面是一些ggplot代碼的簡單示例。首先,我們用ggplot實(shí)例化圖形,設(shè)置美學(xué)和數(shù)據(jù),然后添加點(diǎn)、主題和軸/標(biāo)題標(biāo)簽。

  1. #All Salariesggplot(data=df, aes(x=season_start, y=salary,  
  2. colour=team)) +  geom_point() +  theme(legend.position="none") +   
  3. labs(title = 'Salary Over Time', x='Year', y='Salary ($)'

 Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

Bokeh

Bokeh很漂亮。概念上類似于ggplot,它使用圖形語法來構(gòu)造圖形,Bokeh有一個易于使用的界面,可以制作非常專業(yè)的圖形和儀表板。

  1. import pandas as pdfrom bokeh.plotting import figurefrom bokeh.io  
  2. import show# is_masc is a one-hot encoded dataframe of responses to  
  3. the question:# "Do you identify as masculine?"#Dataframe Prepcounts = 
  4.  is_masc.sum()resps = is_masc.columns#Bokehp2 = figure(title='Do You 
  5.  View Yourself As Masculine?',                   x_axis_label='Response',          y_axis_label='Count',   
  6.              x_range=list(resps))p2.vbar(x=resps, top=counts,  
  7. width=0.6, fill_color='red',  
  8. line_color='black')show(p2)#Pandascounts.plot(kind='bar'

 Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

上面的柱狀圖顯示了538位在最近的一次調(diào)查中對“你認(rèn)為自己是男性嗎”這個問題的回答。第9-14行中的Bokeh代碼創(chuàng)建了一個優(yōu)雅的、專業(yè)的響應(yīng)計數(shù)直方圖,具有合理的字體大小、y標(biāo)記和格式。我編寫的大部分代碼用于標(biāo)記坐標(biāo)軸和標(biāo)題,以及給條形圖添加顏色和邊框。當(dāng)制作漂亮的,像樣的圖形時,我非常傾向于Bokeh -很多美學(xué)工作已經(jīng)為我們做了!

 Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

上面的藍(lán)色圖是上面要點(diǎn)的第17行上的一行代碼。這兩個直方圖具有相同的值,但用途不同。在一個探索性的設(shè)置中,與pandas一起寫一行來查看數(shù)據(jù)要方便得多,但是Bokeh的美學(xué)是相當(dāng)出色的。Bokeh提供的所有便利都可以在Matplotlib中進(jìn)行定制,包括x軸標(biāo)簽的角度、背景線、y軸擴(kuò)展、字體大小/斜體/粗體等。下圖顯示了一些隨機(jī)的趨勢,使用了更多的自定義圖例和不同的線條類型和顏色: 

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

最后提一下,Bokeh也是一個制作交互式儀表板的好工具。

Plotly

Plotly是非常強(qiáng)大的,但設(shè)置和創(chuàng)建的數(shù)字需要很多時間,都不是直觀的。在花了大半個上午埋頭苦干之后,我去吃午飯,幾乎什么也沒看到。我創(chuàng)建了一個沒有軸標(biāo)簽的條形圖和一個“散點(diǎn)圖”,其中的線條我無法刪除。一些值得注意的缺點(diǎn)有:

  • 它需要一個API密鑰和注冊,而不僅僅是一個pip安裝它
  • 繪制的數(shù)據(jù)/布局對象是獨(dú)特的圖片,并不直觀
  • 圖片布局對我不起作用(40行代碼什么都沒有!)
  • 然而,對于所有設(shè)置的缺點(diǎn),也有優(yōu)點(diǎn)和變通方法:
  • 您可以在Plotly網(wǎng)站和Python環(huán)境中編輯圖片
  • 有很多對交互式圖形/儀表板的支持
  • Plotly與Mapbox合作,可以定制地圖
  • 有驚人的整體潛力

如果我只是用一些代碼來表達(dá)我的不滿,而不展示一些代碼和我能夠完成的工作,以及那些更有能力使用這個包的人所完成的工作,這對我來說是不公平的:

  1. #plot 1 - barplot# **note** - the layout lines do nothing and trip no errorsdata = [go.Bar(x=team_ave_df.team,   
  2. y=team_ave_df.turnovers_per_mp)]layout = go.Layout(    title=go.layout.Title(                         
  3. text='Turnovers per Minute by Team', xref='paper',  x=0),      
  4.                  
  5. xaxis=go.layout.XAxis(title = go.layout.xaxis.Title(                              
  6. text='Team',    font=dict( family='Courier New, monospace',    
  7.                                   
  8. size=18, color='#7f7f7f'  )  )  ),                      
  9. yaxis=go.layout.YAxis(  title = go.layout.yaxis.Title(                              
  10. text='Average Turnovers/Minute',   font=dict(                                      
  11. family='Courier New, monospace',   size=18,    
  12.                                    
  13. color='#7f7f7f'  )  )  ),  
  14.    autosize=True,    hovermode='closest')py.iplot(figure_or_data=data, layout=layout, 
  15.  filename='jupyter-plot', sharing='public',  
  16. fileopt='overwrite')#plot 2 - attempt at a scatterplotdata = [go.Scatter(x=player_year.minutes_played,  y=player_year.salary, 
  17.   marker=go.scatter.Marker(color='red',  size=3))]layout = go.Layout(title="test",  xaxis=dict(title='why'),  
  18. yaxis=dict(title='plotly'))py.iplot(figure_or_data=data,  
  19. layout=layout, filename='jupyter-plot2', sharing='public'

 Python的可視化庫超全盤點(diǎn),有你中意的一款嗎? 

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

總的來說,開箱即用的外觀看起來不錯,但是多次嘗試修復(fù)axis標(biāo)簽,逐字復(fù)制文檔,都沒有產(chǎn)生任何變化。然而,正如我之前承諾過的,這里有一些圖片展示了它的潛力,以及為什么花幾個小時以上可能是值得的: 

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

Pygal

Pygal是一個不太為人所知的繪圖包,它與其他流行的包一樣,使用圖形框架的語法來構(gòu)造圖像。由于圖片對象非常簡單,所以它是一個相對簡單的包。使用Pygal非常簡單:

  • 實(shí)例化你的圖片
  • 使用圖形對象的屬性格式化
  • 使用figure. Add()符號將數(shù)據(jù)添加到圖形中

我在Pygal中遇到的主要問題是如何渲染圖形。我必須使用他們的render_to_file選項(xiàng),然后在web瀏覽器中打開該文件,看看我構(gòu)建了什么。它最終是值得的,因?yàn)檫@些數(shù)字是互動的,有一個愉快的和容易定制的審美??偟膩碚f,這個包看起來不錯,但是有一些文件創(chuàng)建/渲染的怪癖限制了它的吸引力。 

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

Networkx

Networkx是分析和可視化圖形的一個很好的解決方案,盡管它是基于matplotlib的。圖形和網(wǎng)絡(luò)不是我的專業(yè)領(lǐng)域,但Networkx允許快速、簡單地用圖形表示連接的網(wǎng)絡(luò)。下面是我構(gòu)建的一個簡單圖的幾個不同的表示,以及從斯坦福SNAP下載的一些開始繪制小型Facebook網(wǎng)絡(luò)的代碼。 

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

我用顏色標(biāo)注每個節(jié)點(diǎn)編號(1-10)的代碼如下:

  1. options = {'node_color' : range(len(G)),               'node_size' :  
  2. 300,    'width' : 1,    'with_labels' : False,              'cmap' :  
  3. plt.cm.coolwarm}nx.draw(G, **options) 

Python的可視化庫超全盤點(diǎn),有你中意的一款嗎?

總結(jié)

有那么多的包可以可視化數(shù)據(jù),卻沒有明確的最佳包。希望在閱讀完這篇綜述之后,您可以看到各種美學(xué)和代碼如何適用于不同的情況,從EDA到presentation。

 

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2019-01-02 13:34:13

Python IDEGeditEclipse

2024-02-26 12:02:37

Python數(shù)據(jù)可視化D3blocks

2018-09-09 23:07:17

物聯(lián)網(wǎng)可視化編程工具

2022-05-17 10:05:55

Karma可視化面板Linux

2024-02-21 23:40:56

2022-05-24 15:03:44

開源工具可視化

2022-06-20 09:45:48

Python開源可視化庫

2023-12-26 15:14:00

2016-03-15 12:27:54

WireEdit可視化編輯工具網(wǎng)絡(luò)數(shù)據(jù)包編輯器

2020-09-02 13:56:03

Python可視化數(shù)據(jù)

2022-08-15 08:02:09

Go程序函數(shù)

2019-10-10 08:46:02

Docker可視化技術(shù)瀏覽器

2023-03-08 07:45:50

可視化編程工具SpringBoot

2024-11-04 08:49:11

2023-09-19 15:44:03

Python數(shù)據(jù)可視化

2021-09-11 21:03:09

可視化搭建框架

2020-07-27 09:59:25

Kafka可視化CMAK

2020-03-24 09:50:33

工具代碼開發(fā)

2020-06-01 16:45:44

Linux終端Terminus

2021-04-27 09:00:59

PythonAidLearning編程神器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號