您好,登錄后才能下訂單哦!
小編給大家分享一下Python可視化工具Plotly怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
發(fā)展由來:
隨著信息技術的發(fā)展和硬件設備成本的降低,當今的互聯(lián)網存在海量的數(shù)據(jù),要想快速從這些數(shù)據(jù)中獲取更多有效的信息,數(shù)據(jù)可視化是重要的一環(huán)。對于Python語言來說,比較傳統(tǒng)的數(shù)據(jù)可視化模塊是Matplotlib,但它存在不夠美觀、靜態(tài)性、不易分享等缺點,限制了Python在數(shù)據(jù)可視化方面的發(fā)展。
為了解決這個問題,新型的動態(tài)可視化開源模塊Plotly應運而生。由于Plotly具有動態(tài)、美觀、易用、種類豐富等特性,所以一經問世就受到開發(fā)人員的喜愛。
簡要說明
Plotly是Python 庫中一種互動,開源繪圖庫,也是基于javascript的繪圖庫,支持 40 多種獨特的圖表類型,效果美觀,其中涵蓋各種統(tǒng)計、財務、地理、科學和三維用例。
有在線和離線模式,易于保存與分享plotly的繪圖結果,并且可以與Web無縫集成;
ploty默認的繪圖結果,是一個HTML網頁文件,通過瀏覽器可以直接查看;
安裝:
pip install plotly
下面均在Jupyter Notebook中運行
數(shù)據(jù)源:
import plotly import plotly.express as px import plotly.graph_objects as go import plotly.io as pio import pandas as pd import numpy as np # plotly內置了數(shù)據(jù)集,方便大家不受數(shù)據(jù)分析思路的背景下,練手用 df=px.data.gapminder() df.head()
運行結果:
# 繪制中國歷年人口變化圖 # df_country=df.query('country=="China"') df_country=df[df['country']=='China'] # 柱狀圖展示 fig=px.bar(df_country, # 數(shù)據(jù)源 x='year', # 橫坐標:年份 y='pop', # 縱坐標:人口 text='pop', # 說明:人口 color='lifeExp', # 顏色取值:根據(jù)平均壽命的值來取 hover_name='year', #控制點名稱:年份 ) fig
運行結果:
# 注釋標題 fig.update_layout(title_text='中國人口變遷史', title_x=.5, font=dict(family='simsun', size=14, color='#1d39c4') ) # 注釋坐標軸 fig.update_layout(xaxis_title='年份', yaxis_title='人口數(shù)量') fig
運行結果:
#柱形圖文字格式 fig.update_traces( textposition='outside', texttemplate='%{text:,.2s}') fig
運行結果:
#利用customdata增加數(shù)據(jù)集 fig.update_traces(customdata=df[['lifeExp','gdpPercap']]) fig.update_traces(hovertemplate='Year: %{x}<br><br> Population: %{y}<br> Life Expectation: %{customdata[0]:,.2f}<br>GDP per capital: %{customdata[1]:,.2f}') # 坐標軸tick設置 fig.update_xaxes(tickangle=-45,tickfont=dict(family='arial',size=12)) fig
運行結果:
# 設置間隙大小及文本大小 fig.update_layout(bargap=.4, uniformtext_minsize=8, uniformtext_mode='show') # 設置注釋 fig.add_annotation(x='1982', y=1000281000, text='突破10億', font=dict(color='red')) fig.update_annotations(dict(xref='x', yref='y', showarrow=True), arrowcolor='red', arrowhead=4) fig.show()
運行結果:
df_2007 = df[df["year"] == 2007] df_2007
運行結果:
# 散點圖 px.scatter(df_2007, # 數(shù)據(jù)集 x="gdpPercap", # 橫坐標:人均GDP y="lifeExp", # 縱坐標:平均壽命 color="continent" # 顏色取值:根據(jù)洲的值來取 )
運行結果:
選擇一個區(qū)域,能將其放大
# 冒泡散點圖 px.scatter(df_2007, # 繪圖DataFrame數(shù)據(jù)集 x="gdpPercap", # 橫坐標 y="lifeExp", # 縱坐標 color="continent", # 區(qū)分顏色 size="pop", # 區(qū)分圓的大小 size_max=60, # 散點大小 hover_name="country" # 控制點名稱 )
運行結果:
# 旭日圖 px.sunburst(df_2007, # 繪圖數(shù)據(jù) path=['continent', 'country'], # 指定路徑:從洲到國家 values='pop', # 數(shù)據(jù)大?。喝丝跀?shù) color='lifeExp', # 顏色 hover_data=['iso_alpha'] # 顯示數(shù)據(jù) )
運行結果:
# 設置地圖的圖形 px.choropleth( df, # 數(shù)據(jù) locations="iso_alpha", # 簡稱 color="lifeExp", # 顏色取值 hover_name="country", # 懸停數(shù)據(jù) animation_frame="year", # 播放按鈕設置 color_continuous_scale=px.colors.sequential.Plasma, # 顏色變化取值 projection="natural earth" # 使用的地圖設置 )
運行結果:
使用泰坦里克號生存為例
import plotly import plotly.express as px import plotly.graph_objects as go import plotly.io as pio import pandas as pd import numpy as np
#數(shù)據(jù)讀取 path2='./dataSet/test.csv' path3='./dataSet/train.csv' test=pd.read_csv(path2) train=pd.read_csv(path3) #數(shù)據(jù)合并 data=pd.concat([test,train])
運行結果:
# 展示數(shù)據(jù)中survived分布情況 df1=pd.DataFrame(data=data['Survived'].value_counts()) df1
運行結果:
fig1=px.bar(df1,y='Survived',text='Survived',color_discrete_sequence=[['#B4C7EC','#14A577']]) fig1.update_layout(title='Survival Status in Titanic', title_x=.5, xaxis_title='Passenger survival status', yaxis_title='Numbers', font=dict(family='arial',color='#000000',size=12), bargap=.5) fig1.update_xaxes(tick0=0, #設置X軸起點,防止從負數(shù)開始 dtick=1, #設置間隔,防止出現(xiàn)0.5間隔 tickvals=[0,1], #設置tick數(shù)值,為了重命名 ticktext=['Drowned','Suvived'],#重命名系列index tickfont=dict(family='arial',color='#000000',size=14)) fig1.update_yaxes(range=[0,650]) #設置Y軸區(qū)間,使圖形不至于視覺上壓迫 fig1.update_traces(textposition='outside', textfont_size=16, textfont_color=['#8C1004','#007046']) fig1.show()
運行結果:
# 以survived 與sex為例,展示各性別下,生存與死亡的相對關系。 df_sex=pd.DataFrame(data=data.groupby(['Survived','Sex'])['PassengerId'].count()) df_sex=df_sex.reset_index() df_sex
運行結果:
fig_sex1=px.bar(df_sex,x='Survived',y='PassengerId',color='Sex',barmode='group',text='PassengerId', color_discrete_map={'female':'#F17F0B','male':'#0072E5'}) fig_sex1.update_traces(textposition='outside', textfont_size=14, textfont_color=['#8C1004','#007046']) fig_sex1.update_xaxes( tickvals=[0,1], #設置tick數(shù)值,為了重命名 ticktext=['Drowned','Suvived'],#重命名系列index tickfont=dict(family='arial', color='#000000', size=14)) fig_sex1.update_layout(title='Overall Suvival in terms of Sex', title_x=.5, bargap=.35, xaxis_title='', yaxis_title='Numbers of Passengers', font=dict(family='arial', color='#000000', size=13)) fig_sex1.update_yaxes(range=[0,500], dtick=100) fig_sex1.show()
運行結果:
fig_sex2=px.bar(df_sex,x='Sex',y='PassengerId',facet_col='Survived',text='PassengerId', color_discrete_sequence=[['#F17F0B','#0072E5']]) fig_sex2.update_traces(textposition='outside', textfont_size=14,) fig_sex2.update_layout(title='Overall Suvival in terms of Sex', title_x=.5, bargap=.35, yaxis_title='Numbers of Passengers', font=dict(family='arial', color='#000000', size=13), ) #取消自帶sex標題 fig_sex2.update_layout(xaxis=dict(title=''), xaxis2=dict(title='')) fig_sex2.update_yaxes(range=[0,500], dtick=100) fig_sex2.for_each_annotation(lambda a:a.update(text=a.text.replace('Survived=0.0','Drowned'))) fig_sex2.for_each_annotation(lambda a:a.update(text=a.text.replace('Survived=1.0','Suvived'))) fig_sex2.update_layout(annotations=[dict(font=dict(size=16, color='#002CB2'))]) fig_sex2.show()
運行結果:
# 以survived 與pclass為例,展示各艙位等級下,生存與死亡的相對關系。 df_pclass=pd.DataFrame(data=data.groupby(['Survived','Pclass'])['PassengerId'].count()) df_pclass=df_pclass.reset_index() df_pclass
運行結果:
fig_sex1=px.bar(df_pclass,x='Survived',y='PassengerId',color='Pclass',barmode='group',text='PassengerId', color_discrete_map={'1':'#F17F0B','2':'#0072E5','3':'#8C1004'}) fig_sex1.update_traces(textposition='outside', textfont_size=14, textfont_color=['#8C1004','#007046']) fig_sex1.update_xaxes( tickvals=[0,1], #設置tick數(shù)值,為了重命名 ticktext=['Drowned','Suvived'],#重命名系列index tickfont=dict(family='arial', color='#000000', size=14)) fig_sex1.update_layout(title='Overall Suvival in terms of Pclass', title_x=.5, bargap=.35, xaxis_title='', yaxis_title='Numbers of Passengers', font=dict(family='arial', color='#000000', size=13)) fig_sex1.update_yaxes(range=[0,500], dtick=100) fig_sex1.show()
運行結果:
以上是“Python可視化工具Plotly怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。