<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          這5種動(dòng)態(tài)炫酷圖,用Python就可以畫!

          共 6592字,需瀏覽 14分鐘

           ·

          2021-11-05 09:39





          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          作者丨Liana Mehrabyan

          數(shù)據(jù)可以幫助我們描述這個(gè)世界、闡釋自己的想法和展示自己的成果,但如果只有單調(diào)乏味的文本和數(shù)字,我們卻往往能難抓住觀眾的眼球。而很多時(shí)候,一張漂亮的可視化圖表就足以勝過千言萬語。本文將介紹 5 種基于 Plotly 的可視化方法,你會(huì)發(fā)現(xiàn),原來可視化不僅可用直方圖和箱形圖,還能做得如此動(dòng)態(tài)好看甚至可交互。
          對(duì)數(shù)據(jù)科學(xué)家來說,講故事是一個(gè)至關(guān)重要的技能。為了表達(dá)我們的思想并且說服別人,我們需要有效的溝通。而漂漂亮亮的可視化是完成這一任務(wù)的絕佳工具。本文將介紹?5 種非傳統(tǒng)的可視化技術(shù),可讓你的數(shù)據(jù)故事更漂亮和更有效。這里將使用 Python 的 Plotly 圖形庫(也可通過 R 使用),讓你可以毫不費(fèi)力地生成動(dòng)畫圖表和交互式圖表。
          那么,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()

          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


          瀏覽 54
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成年人看的毛片 | 黄色网页在线免费观看 | 男女午夜福利视频 | 亚洲精品人妻无码 | 日韩黄色视频播放 |