




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一文教會(huì)你用Python繪制動(dòng)態(tài)可視化圖表目錄前言安裝模塊可視化動(dòng)態(tài)圖太陽(yáng)圖指針圖?;鶊D平行坐標(biāo)圖總結(jié)
前言
對(duì)數(shù)據(jù)科學(xué)家來(lái)說(shuō),講故事是一個(gè)至關(guān)重要的技能。為了表達(dá)我們的思想并且說(shuō)服別人,我們需要有效的溝通。而漂漂亮亮的可視化是完成這一任務(wù)的絕佳工具。
本文將介紹5種非傳統(tǒng)的可視化技術(shù),可讓你的數(shù)據(jù)故事更漂亮和更有效。這里將使用Python的Plotly圖形庫(kù),讓你可以毫不費(fèi)力地生成動(dòng)畫(huà)圖表和交互式圖表。
安裝模塊
如果你還沒(méi)安裝Plotly,只需在你的終端運(yùn)行以下命令即可完成安裝:
pipinstallplotly
可視化動(dòng)態(tài)圖
在研究這個(gè)或那個(gè)指標(biāo)的演變時(shí),我們常涉及到時(shí)間數(shù)據(jù)。Plotly動(dòng)畫(huà)工具僅需一行代碼就能讓人觀看數(shù)據(jù)隨時(shí)間的變化情況,如下圖所示:
代碼如下:
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()
只要你有一個(gè)時(shí)間變量來(lái)過(guò)濾,那么幾乎任何圖表都可以做成動(dòng)畫(huà)。下面是一個(gè)制作散點(diǎn)圖動(dòng)畫(huà)的例子:
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)')
太陽(yáng)圖
太陽(yáng)圖(sunburstchart)是一種可視化groupby語(yǔ)句的好方法。如果你想通過(guò)一個(gè)或多個(gè)類別變量來(lái)分解一個(gè)給定的量,那就用太陽(yáng)圖吧。
假設(shè)我們想根據(jù)性別和每天的時(shí)間分解平均小費(fèi)數(shù)據(jù),那么相較于表格,這種雙重groupby語(yǔ)句可以通過(guò)可視化來(lái)更有效地展示。
這個(gè)圖表是交互式的,讓你可以自己點(diǎn)擊并探索各個(gè)類別。你只需要定義你的所有類別,并聲明它們之間的層次結(jié)構(gòu)(見(jiàn)以下代碼中的parents參數(shù))并分配對(duì)應(yīng)的值即可,這在我們案例中即為groupby語(yǔ)句的輸出。
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)在我們向這個(gè)層次結(jié)構(gòu)再添加一層:
為此,我們?cè)偬砑恿硪粋€(gè)涉及三個(gè)類別變量的groupby語(yǔ)句的值。
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()
指針圖
指針圖僅僅是為了好看。在報(bào)告KPI等成功指標(biāo)并展示其與你的目標(biāo)的距離時(shí),可以使用這種圖表。
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()
桑基圖
另一種探索類別變量之間關(guān)系的方法是以下這種平行坐標(biāo)圖。你可以隨時(shí)拖放、高亮和瀏覽值,非常適合演示時(shí)使用。
代碼如下:
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()
平行坐標(biāo)圖
平行坐標(biāo)圖是上面的圖表的衍生版本。這里,每一根弦都代表單個(gè)觀察。這是一種可用于識(shí)別離群值(遠(yuǎn)離其它數(shù)據(jù)的單條線)、聚類、趨勢(shì)和冗余變量(比如如果兩個(gè)變量在每個(gè)觀察上的值都相近,那么它們將位于同一水平線上,表示存在冗余)的好用工具。
代碼如下:
importplotly.expressaspx
fromvega_datasetsimportdata
importpandasaspd
df=data.movies()
df=df.dropna()
df['Genre_id']=df.Major_Genre.factorize()[0]
fig=px.parallel_c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衢州市文化課堂管理辦法
- 衡東縣基礎(chǔ)教育管理辦法
- 裕安區(qū)臨時(shí)用地管理辦法
- 西安市門(mén)頭管理暫行辦法
- 解放軍機(jī)槍庫(kù)存管理辦法
- 證監(jiān)局違規(guī)處罰管理辦法
- 負(fù)責(zé)人年薪管理暫行辦法
- 賬戶適當(dāng)性管理暫行辦法
- 貴州省私車(chē)公用管理辦法
- 資產(chǎn)購(gòu)置與驗(yàn)收管理辦法
- 保鮮庫(kù)建設(shè)項(xiàng)目可行性研究報(bào)告(可編輯)
- 血透并發(fā)腦出血護(hù)理查房-尿毒癥合并腦出血護(hù)理查房課件
- 酒店智能客房控制系統(tǒng)維護(hù)保養(yǎng)合同
- GB/T 14600-2025電子氣體一氧化二氮
- 車(chē)輛運(yùn)輸包月合同
- 茶百道加盟合同協(xié)議
- 殘疾人之家工作總結(jié)
- 模具合同三方附加協(xié)議
- 專職安全生產(chǎn)管理人員綜合類C證模擬試題
- 2025年全國(guó)衛(wèi)生健康系統(tǒng)職業(yè)技能競(jìng)賽(預(yù)防接種)考試題庫(kù)(500題)
- 夏季混凝土施工培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論