一文教會你用Python繪制動態(tài)可視化圖表_第1頁
一文教會你用Python繪制動態(tài)可視化圖表_第2頁
一文教會你用Python繪制動態(tài)可視化圖表_第3頁
一文教會你用Python繪制動態(tài)可視化圖表_第4頁
一文教會你用Python繪制動態(tài)可視化圖表_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一文教會你用Python繪制動態(tài)可視化圖表目錄前言安裝模塊可視化動態(tài)圖太陽圖指針圖?;鶊D平行坐標圖總結(jié)

前言

對數(shù)據(jù)科學家來說,講故事是一個至關(guān)重要的技能。為了表達我們的思想并且說服別人,我們需要有效的溝通。而漂漂亮亮的可視化是完成這一任務(wù)的絕佳工具。

本文將介紹5種非傳統(tǒng)的可視化技術(shù),可讓你的數(shù)據(jù)故事更漂亮和更有效。這里將使用Python的Plotly圖形庫,讓你可以毫不費力地生成動畫圖表和交互式圖表。

安裝模塊

如果你還沒安裝Plotly,只需在你的終端運行以下命令即可完成安裝:

pipinstallplotly

可視化動態(tài)圖

在研究這個或那個指標的演變時,我們常涉及到時間數(shù)據(jù)。Plotly動畫工具僅需一行代碼就能讓人觀看數(shù)據(jù)隨時間的變化情況,如下圖所示:

代碼如下:

importplotly.expressaspx

fromvega_datasetsimportdata

df=data.disasters()

df=df[df.Year1990]

fig=px.bar(df,

y="Entity",

x="Deaths",

animation_frame="Year",

orientation='h',

range_x=[0,df.Deaths.max()],

color="Entity")

#improveaesthetics(size,gridsetc.)

fig.update_layout(width=1000,

height=800,

xaxis_showgrid=False,

yaxis_showgrid=False,

paper_bgcolor='rgba(0,0,0,0)',

plot_bgcolor='rgba(0,0,0,0)',

title_text='EvolutionofNaturalDisasters',

showlegend=False)

fig.update_xaxes(title_text='NumberofDeaths')

fig.update_yaxes(title_text='')

fig.show()

只要你有一個時間變量來過濾,那么幾乎任何圖表都可以做成動畫。下面是一個制作散點圖動畫的例子:

importplotly.expressaspx

df=px.data.gapminder()

fig=px.scatter(

x="gdpPercap",

y="lifeExp",

animation_frame="year",

size="pop",

color="continent",

hover_name="country",

log_x=True,

size_max=55,

range_x=[100,100000],

range_y=[25,90],

#color_continuous_scale=px.colors.sequential.Emrld

fig.update_layout(width=1000,

height=800,

xaxis_showgrid=False,

yaxis_showgrid=False,

paper_bgcolor='rgba(0,0,0,0)',

plot_bgcolor='rgba(0,0,0,0)')

太陽圖

太陽圖(sunburstchart)是一種可視化groupby語句的好方法。如果你想通過一個或多個類別變量來分解一個給定的量,那就用太陽圖吧。

假設(shè)我們想根據(jù)性別和每天的時間分解平均小費數(shù)據(jù),那么相較于表格,這種雙重groupby語句可以通過可視化來更有效地展示。

這個圖表是交互式的,讓你可以自己點擊并探索各個類別。你只需要定義你的所有類別,并聲明它們之間的層次結(jié)構(gòu)(見以下代碼中的parents參數(shù))并分配對應(yīng)的值即可,這在我們案例中即為groupby語句的輸出。

importplotly.graph_objectsasgo

importplotly.expressaspx

importnumpyasnp

importpandasaspd

df=px.data.tips()

fig=go.Figure(go.Sunburst(

labels=["Female","Male","Dinner","Lunch",'Dinner','Lunch'],

parents=["","","Female","Female",'Male','Male'],

values=np.append(

df.groupby('sex').tip.mean().values,

df.groupby(['sex','time']).tip.mean().values),

marker=dict(colors=px.colors.sequential.Emrld)),

layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',

plot_bgcolor='rgba(0,0,0,0)'))

fig.update_layout(margin=dict(t=0,l=0,r=0,b=0),

title_text='TippingHabbitsPerGender,TimeandDay')

fig.show()

現(xiàn)在我們向這個層次結(jié)構(gòu)再添加一層:

為此,我們再添加另一個涉及三個類別變量的groupby語句的值。

importplotly.graph_objectsasgo

importplotly.expressaspx

importpandasaspd

importnumpyasnp

df=px.data.tips()

fig=go.Figure(go.Sunburst(labels=[

"Female","Male","Dinner","Lunch",'Dinner','Lunch','Fri','Sat',

'Sun','Thu','Fri','Thu','Fri','Sat','Sun','Fri','Thu'

parents=[

"","","Female","Female",'Male','Male',

'Dinner','Dinner','Dinner','Dinner',

'Lunch','Lunch','Dinner','Dinner',

'Dinner','Lunch','Lunch'

values=np.append(

np.append(

df.groupby('sex').tip.mean().values,

df.groupby(['sex',

'time']).tip.mean().values,

df.groupby(['sex','time',

'day']).tip.mean().values),

marker=dict(colors=px.colors.sequential.Emrld)),

layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',

plot_bgcolor='rgba(0,0,0,0)'))

fig.update_layout(margin=dict(t=0,l=0,r=0,b=0),

title_text='TippingHabbitsPerGender,TimeandDay')

fig.show()

指針圖

指針圖僅僅是為了好看。在報告KPI等成功指標并展示其與你的目標的距離時,可以使用這種圖表。

importplotly.graph_objectsasgo

fig=go.Figure(go.Indicator(

domain={'x':[0,1],'y':[0,1]},

value=4.3,

mode="gauge+number+delta",

title={'text':"SuccessMetric"},

delta={'reference':3.9},

gauge={'bar':{'color':"lightgreen"},

'axis':{'range':[None,5]},

'steps':[

{'range':[0,2.5],'color':"lightgray"},

{'range':[2.5,4],'color':"gray"}],

fig.show()

?;鶊D

另一種探索類別變量之間關(guān)系的方法是以下這種平行坐標圖。你可以隨時拖放、高亮和瀏覽值,非常適合演示時使用。

代碼如下:

importplotly.expressaspx

fromvega_datasetsimportdata

importpandasaspd

df=data.movies()

df=df.dropna()

df['Genre_id']=df.Major_Genre.factorize()[0]

fig=px.parallel_categories(

dimensions=['MPAA_Rating','Creative_Type','Major_Genre'],

color="Genre_id",

color_continuous_scale=px.colors.sequential.Emrld,

fig.show()

平行坐標圖

平行坐標圖是上面的圖表的衍生版本。這里,每一根弦都代表單個觀察。這是一種可用于識別離群值(遠離其它數(shù)據(jù)的單條線)、聚類、趨勢和冗余變量(比如如果兩個變量在每個觀察上的值都相近,那么它們將位于同一水平線上,表示存在冗余)的好用工具。

代碼如下:

importplotly.expressaspx

fromvega_datasetsimportdata

importpandasaspd

df=data.movies()

df=df.dropna()

df['Genre_id']=df.Major_Genre.factorize()[0]

fig=px.parallel_c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論