欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python可視化工具Plotly的應(yīng)用教程

 更新時間:2021年12月23日 11:53:19   作者:奮斗的源  
對于Python語言來說,比較傳統(tǒng)的數(shù)據(jù)可視化模塊是Matplotlib,但它存在不夠美觀、靜態(tài)性、不易分享等缺點,限制了Python在數(shù)據(jù)可視化方面的發(fā)展。為了解決這個問題,新型的動態(tài)可視化開源模塊Plotly應(yīng)運而生。本文將為大家詳細介紹Plotly的用法,需要的可以參考一下

一.簡介

發(fā)展由來:

隨著信息技術(shù)的發(fā)展和硬件設(shè)備成本的降低,當今的互聯(lián)網(wǎng)存在海量的數(shù)據(jù),要想快速從這些數(shù)據(jù)中獲取更多有效的信息,數(shù)據(jù)可視化是重要的一環(huán)。對于Python語言來說,比較傳統(tǒng)的數(shù)據(jù)可視化模塊是Matplotlib,但它存在不夠美觀、靜態(tài)性、不易分享等缺點,限制了Python在數(shù)據(jù)可視化方面的發(fā)展。

為了解決這個問題,新型的動態(tài)可視化開源模塊Plotly應(yīng)運而生。由于Plotly具有動態(tài)、美觀、易用、種類豐富等特性,所以一經(jīng)問世就受到開發(fā)人員的喜愛。

簡要說明

Plotly是Python 庫中一種互動,開源繪圖庫,也是基于javascript的繪圖庫,支持 40 多種獨特的圖表類型,效果美觀,其中涵蓋各種統(tǒng)計、財務(wù)、地理、科學(xué)和三維用例。

有在線和離線模式,易于保存與分享plotly的繪圖結(jié)果,并且可以與Web無縫集成;

ploty默認的繪圖結(jié)果,是一個HTML網(wǎng)頁文件,通過瀏覽器可以直接查看;

在這里插入圖片描述

二.各圖運用

安裝:

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內(nèi)置了數(shù)據(jù)集,方便大家不受數(shù)據(jù)分析思路的背景下,練手用
df=px.data.gapminder()
df.head()

運行結(jié)果:

在這里插入圖片描述

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

運行結(jié)果:

在這里插入圖片描述

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

運行結(jié)果:

在這里插入圖片描述

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

fig

運行結(jié)果:

在這里插入圖片描述

#利用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設(shè)置
fig.update_xaxes(tickangle=-45,tickfont=dict(family='arial',size=12))
        
fig

運行結(jié)果:

在這里插入圖片描述

# 設(shè)置間隙大小及文本大小
fig.update_layout(bargap=.4,
                 uniformtext_minsize=8,
                 uniformtext_mode='show')
# 設(shè)置注釋
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()

運行結(jié)果:

在這里插入圖片描述

2.散點圖

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

運行結(jié)果:

在這里插入圖片描述

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

運行結(jié)果:

在這里插入圖片描述

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

在這里插入圖片描述

在這里插入圖片描述

3.冒泡散點圖

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

運行結(jié)果:

在這里插入圖片描述

4.旭日圖

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

運行結(jié)果:

在這里插入圖片描述

5.地圖圖形

# 設(shè)置地圖的圖形
px.choropleth(
  df,  # 數(shù)據(jù)
  locations="iso_alpha",  # 簡稱
  color="lifeExp",  # 顏色取值
  hover_name="country",  # 懸停數(shù)據(jù)
  animation_frame="year",  # 播放按鈕設(shè)置
  color_continuous_scale=px.colors.sequential.Plasma,  # 顏色變化取值
  projection="natural earth"  # 使用的地圖設(shè)置
)

運行結(jié)果:

在這里插入圖片描述

三.實戰(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ù)讀取
path1='./dataSet/test.csv'
path2='./dataSet/train.csv'
test=pd.read_csv(path1)
train=pd.read_csv(path2)
#數(shù)據(jù)合并
data=pd.concat([test,train])

運行結(jié)果:

在這里插入圖片描述

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

運行結(jié)果:

在這里插入圖片描述

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,  #設(shè)置X軸起點,防止從負數(shù)開始
                  dtick=1,   #設(shè)置間隔,防止出現(xiàn)0.5間隔
                  tickvals=[0,1], #設(shè)置tick數(shù)值,為了重命名
                 ticktext=['Drowned','Suvived'],#重命名系列index
                 tickfont=dict(family='arial',color='#000000',size=14)) 
fig1.update_yaxes(range=[0,650]) #設(shè)置Y軸區(qū)間,使圖形不至于視覺上壓迫
fig1.update_traces(textposition='outside',
                   textfont_size=16,
                  textfont_color=['#8C1004','#007046'])
fig1.show()

運行結(jié)果:

在這里插入圖片描述

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

運行結(jié)果:

在這里插入圖片描述

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], #設(shè)置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()

運行結(jié)果:

在這里插入圖片描述

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

運行結(jié)果:

在這里插入圖片描述

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

運行結(jié)果:

在這里插入圖片描述

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], #設(shè)置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()

運行結(jié)果:

在這里插入圖片描述

以上就是Python可視化工具Plotly的應(yīng)用教程的詳細內(nèi)容,更多關(guān)于Python Plotly的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中Selenium上傳文件的幾種方式

    Python中Selenium上傳文件的幾種方式

    本文主要介紹了Python中Selenium上傳文件的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python如何用NumPy讀取和保存點云數(shù)據(jù)

    Python如何用NumPy讀取和保存點云數(shù)據(jù)

    這篇文章主要介紹了Python如何用NumPy讀取和保存點云數(shù)據(jù),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python爬取網(wǎng)易云歌曲評論實現(xiàn)詞云圖

    Python爬取網(wǎng)易云歌曲評論實現(xiàn)詞云圖

    這篇文章主要為大家介紹了Python爬取網(wǎng)易云歌曲評論實現(xiàn)詞云分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python報錯TypeError: tuple indices must be integers or slices, not str的問題分析及解決方法

    Python報錯TypeError: tuple indices must be

    在Python編程過程中,我們經(jīng)常會遇到各種各樣的報錯信息,其中,“TypeError: tuple indices must be integers or slices, not str”這個報錯,對于很多開發(fā)者來說,可能既熟悉又陌生,今天,我們就來深入探討一下這個報錯,看看它是如何產(chǎn)生的,以及如何快速有效地解決它
    2025-01-01
  • django haystack實現(xiàn)全文檢索的示例代碼

    django haystack實現(xiàn)全文檢索的示例代碼

    這篇文章主要介紹了django haystack實現(xiàn)全文檢索的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Flask框架Flask-Principal基本用法實例分析

    Flask框架Flask-Principal基本用法實例分析

    這篇文章主要介紹了Flask框架Flask-Principal基本用法,結(jié)合實例形式分析了Flask框架flask-principal擴展的基本功能、安裝、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-07-07
  • 解決pytorch DataLoader num_workers出現(xiàn)的問題

    解決pytorch DataLoader num_workers出現(xiàn)的問題

    今天小編就為大家分享一篇解決pytorch DataLoader num_workers出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python解析excel文件存入sqlite數(shù)據(jù)庫的方法

    Python解析excel文件存入sqlite數(shù)據(jù)庫的方法

    最近工作中遇到一個需求,需要使用Python解析excel文件并存入sqlite,本文就實現(xiàn)的過程做個總結(jié)分享給大家,文中包括數(shù)據(jù)庫設(shè)計、建立數(shù)據(jù)庫、Python解析excel文件、Python讀取文件名并解析和將解析的數(shù)據(jù)存儲入庫,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • Python箱型圖繪制與特征值獲取過程解析

    Python箱型圖繪制與特征值獲取過程解析

    這篇文章主要介紹了Python箱型圖繪制與特征值獲取過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • openCV提取圖像中的矩形區(qū)域

    openCV提取圖像中的矩形區(qū)域

    這篇文章主要為大家詳細介紹了openCV提取圖像中的矩形區(qū)域,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論