1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        這5種炫酷的動(dòng)態(tài)圖,都是用Python實(shí)現(xiàn)的!

        共 5971字,需瀏覽 12分鐘

         ·

        2022-04-07 10:09


        數(shù)據(jù)可以幫助我們描述這個(gè)世界、闡釋自己的想法和展示自己的成果,但如果只有單調(diào)乏味的文本和數(shù)字,我們卻往往能難抓住觀眾的眼球。而很多時(shí)候,一張漂亮的可視化圖表就足以勝過千言萬語。


        本文將介紹 5 種基于 Plotly 的可視化方法,你會(huì)發(fā)現(xiàn),原來可視化不僅可用直方圖和箱形圖,還能做得如此動(dòng)態(tài)好看甚至可交互。

        那么,Plotly 有哪些好處?Plotly 的整合能力很強(qiáng):可與 Jupyter Notebook 一起使用,可嵌入網(wǎng)站,并且完整集成了 Dash——一種用于構(gòu)建儀表盤和分析應(yīng)用的出色工具。

        啟動(dòng)

        如果你還沒安裝 Plotly,只需在你的終端運(yùn)行以下命令即可完成安裝:
        pip?install?plotly

        安裝完成后,就開始使用吧!

        動(dòng)畫

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


        代碼如下:
        import?plotly.express?as?px
        from?vega_datasets?import?data
        df?=?data.disasters()
        df?=?df[df.Year?>?1990]
        fig?=?px.bar(df,
        ?????????????y="Entity",
        ?????????????x="Deaths",
        ?????????????animation_frame="Year",
        ?????????????orientation='h',
        ?????????????range_x=[0,?df.Deaths.max()],
        ?????????????color="Entity")
        #?improve?aesthetics?(size,?grids?etc.)
        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='Evolution?of?Natural?Disasters',
        ??????????????????showlegend=False)
        fig.update_xaxes(title_text='Number?of?Deaths')
        fig.update_yaxes(title_text='')
        fig.show()


        只要你有一個(gè)時(shí)間變量來過濾,那么幾乎任何圖表都可以做成動(dòng)畫。下面是一個(gè)制作散點(diǎn)圖動(dòng)畫的例子:
        import?plotly.express?as?px
        df?=?px.data.gapminder()
        fig?=?px.scatter(
        ????df,
        ????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)')

        太陽圖

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

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


        這個(gè)圖表是交互式的,讓你可以自己點(diǎn)擊并探索各個(gè)類別。你只需要定義你的所有類別,并聲明它們之間的層次結(jié)構(gòu)(見以下代碼中的 parents 參數(shù))并分配對(duì)應(yīng)的值即可,這在我們案例中即為 group by 語句的輸出。
        import?plotly.graph_objects?as?go
        import?plotly.express?as?px
        import?numpy?as?np
        import?pandas?as?pd
        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='Tipping?Habbits?Per?Gender,?Time?and?Day')
        fig.show()


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


        為此,我們?cè)偬砑恿硪粋€(gè)涉及三個(gè)類別變量的 group by 語句的值。
        import?plotly.graph_objects?as?go
        import?plotly.express?as?px
        import?pandas?as?pd
        import?numpy?as?np
        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='Tipping?Habbits?Per?Gender,?Time?and?Day')

        fig.show()


        平行類別

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


        代碼如下:
        import?plotly.express?as?px
        from?vega_datasets?import?data
        import?pandas?as?pd
        df?=?data.movies()
        df?=?df.dropna()
        df['Genre_id']?=?df.Major_Genre.factorize()[0]
        fig?=?px.parallel_categories(
        ????df,
        ????dimensions=['MPAA_Rating',?'Creative_Type',?'Major_Genre'],
        ????color="Genre_id",
        ????color_continuous_scale=px.colors.sequential.Emrld,
        )
        fig.show()


        平行坐標(biāo)圖

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


        代碼如下:
        import?plotly.express?as?px
        from?vega_datasets?import?data
        import?pandas?as?pd
        df?=?data.movies()
        df?=?df.dropna()
        df['Genre_id']?=?df.Major_Genre.factorize()[0]
        fig?=?px.parallel_coordinates(
        ????df,
        ????dimensions=[
        ????????'IMDB_Rating',?'IMDB_Votes',?'Production_Budget',?'Running_Time_min',
        ????????'US_Gross',?'Worldwide_Gross',?'US_DVD_Sales'
        ????],
        ????color='IMDB_Rating',
        ????color_continuous_scale=px.colors.sequential.Emrld)
        fig.show()


        量表圖和指示器


        量表圖僅僅是為了好看。在報(bào)告 KPI 等成功指標(biāo)并展示其與你的目標(biāo)的距離時(shí),可以使用這種圖表。

        指示器在業(yè)務(wù)和咨詢中非常有用。它們可以通過文字記號(hào)來補(bǔ)充視覺效果,吸引觀眾的注意力并展現(xiàn)你的增長(zhǎng)指標(biāo)。
        import?plotly.graph_objects?as?go
        fig?=?go.Figure(go.Indicator(
        ????domain?=?{'x':?[0,?1],?'y':?[0,?1]},
        ????value?=?4.3,
        ????mode?=?"gauge+number+delta",
        ????title?=?{'text':?"Success?Metric"},
        ????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()
        原文鏈接:https://towardsdatascience.com/5-visualisations-to-level-up-your-data-story-e131759c2f41
        往期推薦

        1、美國(guó)國(guó)家安全局是如何入侵你的電腦的?
        2、美國(guó)四大科技巨頭:蘋果、微軟、Facebook、谷歌的愛恨情仇
        3、幾行Python代碼實(shí)現(xiàn)動(dòng)圖倒放,太好玩
        4、烏克蘭國(guó)防系統(tǒng)賬號(hào):admin,密碼:123456
        5、這代碼誰寫的,太可怕了!

        點(diǎn)擊關(guān)注公眾號(hào),閱讀更多精彩內(nèi)容
        瀏覽 48
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            天天日天天干夜夜操 | 超碰国产97 | 特级西西人体444www高清视频 | 我要看黄色1级片 | 免费看黄在线看 | 欧美有码在线观看 | 亚洲性爱在线观看 | 欧美在线91 | 激情亚洲网| 国精产品视频久久 |