溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python可視化工具Plotly怎么用

發(fā)布時間:2022-03-04 10:33:18 來源:億速云 閱讀:203 作者:小新 欄目:開發(fā)技術

小編給大家分享一下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網頁文件,通過瀏覽器可以直接查看;

    Python可視化工具Plotly怎么用

    二.各圖運用

    安裝:

    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()

    運行結果:

    Python可視化工具Plotly怎么用

    1.柱狀圖

    # 繪制中國歷年人口變化圖
    # 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

    運行結果:

    Python可視化工具Plotly怎么用

    # 注釋標題
    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

    運行結果:

    Python可視化工具Plotly怎么用

    #柱形圖文字格式
    fig.update_traces(
                     textposition='outside',
                     texttemplate='%{text:,.2s}')
    
    fig

    運行結果:

    Python可視化工具Plotly怎么用

    #利用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

    運行結果:

    Python可視化工具Plotly怎么用

    # 設置間隙大小及文本大小
    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()

    運行結果:

    Python可視化工具Plotly怎么用

    2.散點圖

    df_2007 = df[df["year"] == 2007]
    df_2007

    運行結果:

    Python可視化工具Plotly怎么用

    # 散點圖
    px.scatter(df_2007,   # 數(shù)據(jù)集
               x="gdpPercap",  # 橫坐標:人均GDP
               y="lifeExp",  # 縱坐標:平均壽命
               color="continent"  # 顏色取值:根據(jù)洲的值來取
              )

    運行結果:

    Python可視化工具Plotly怎么用

    選擇一個區(qū)域,能將其放大

    Python可視化工具Plotly怎么用

    Python可視化工具Plotly怎么用

    3.冒泡散點圖

    # 冒泡散點圖
    px.scatter(df_2007,   # 繪圖DataFrame數(shù)據(jù)集
               x="gdpPercap",  # 橫坐標
               y="lifeExp",  # 縱坐標
               color="continent",  # 區(qū)分顏色
               size="pop",  # 區(qū)分圓的大小
               size_max=60,  # 散點大小
               hover_name="country"  # 控制點名稱
              )

    運行結果:

    Python可視化工具Plotly怎么用

    4.旭日圖

    # 旭日圖
    px.sunburst(df_2007,   # 繪圖數(shù)據(jù)
                path=['continent', 'country'],  # 指定路徑:從洲到國家
                values='pop', # 數(shù)據(jù)大?。喝丝跀?shù)
                color='lifeExp',  # 顏色
                hover_data=['iso_alpha'] # 顯示數(shù)據(jù)
               )

    運行結果:

    Python可視化工具Plotly怎么用

    5.地圖圖形

    # 設置地圖的圖形
    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"  # 使用的地圖設置
    )

    運行結果:

    Python可視化工具Plotly怎么用

    三.實戰(zhàn)案例

    使用泰坦里克號生存為例

    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])

    運行結果:

    Python可視化工具Plotly怎么用

    # 展示數(shù)據(jù)中survived分布情況
    df1=pd.DataFrame(data=data['Survived'].value_counts())
    df1

    運行結果:

    Python可視化工具Plotly怎么用

    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()

    運行結果:

    Python可視化工具Plotly怎么用

    # 以survived 與sex為例,展示各性別下,生存與死亡的相對關系。
    df_sex=pd.DataFrame(data=data.groupby(['Survived','Sex'])['PassengerId'].count())
    df_sex=df_sex.reset_index()
    df_sex

    運行結果:

    Python可視化工具Plotly怎么用

    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()

    運行結果:

    Python可視化工具Plotly怎么用

    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()

    運行結果:

    Python可視化工具Plotly怎么用

    # 以survived 與pclass為例,展示各艙位等級下,生存與死亡的相對關系。
    df_pclass=pd.DataFrame(data=data.groupby(['Survived','Pclass'])['PassengerId'].count())
    df_pclass=df_pclass.reset_index()
    df_pclass

    運行結果:

    Python可視化工具Plotly怎么用

    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怎么用

    以上是“Python可視化工具Plotly怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

    AI