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

          【Plotly快速入門】用Plotly繪制了幾張精湛的圖表,美翻了!!

          共 6802字,需瀏覽 14分鐘

           ·

          2022-08-16 23:24


          說到Python當(dāng)中的可視化模塊,相信大家用的比較多的還是matplotlib、seaborn等模塊,今天小編來嘗試用Plotly模塊為大家繪制可視化圖表,和前兩者相比,用Plotly模塊會(huì)指出來的可視化圖表有著很強(qiáng)的交互性。

          柱狀圖

          我們先導(dǎo)入后面需要用到的模塊并且生成一批假數(shù)據(jù),

                
                

          import?numpy?as?np
          import?plotly.graph_objects?as?go

          #?create?dummy?data
          vals?=?np.ceil(100?*?np.random.rand(5)).astype(int)
          keys?=?["A",?"B",?"C",?"D",?"E"]

          我們基于所生成的假數(shù)據(jù)來繪制柱狀圖,代碼如下

                
                

          fig?=?go.Figure()
          fig.add_trace(
          ?go.Bar(x=keys,?y=vals)
          )
          fig.update_layout(height=600,?width=600)
          fig.show()

          output

          6f86fad14b7eed9ae161ab51f965cb69.webp

          可能讀者會(huì)感覺到繪制出來的圖表略顯簡單,我們?cè)賮硗晟埔幌?,添加上?biāo)題和注解,代碼如下
                
                

          #?create?figure
          fig?=?go.Figure()
          #?繪制圖表
          fig.add_trace(
          ????go.Bar(x=keys,?y=vals,?hovertemplate="<b>Key:</b>?%{x}<br><b>Value:</b>?%{y}<extra></extra>")
          )
          #?更新完善圖表
          fig.update_layout(
          ????font_family="Averta",
          ????hoverlabel_font_family="Averta",
          ????title_text="直方圖",
          ????xaxis_title_text="X軸-鍵",
          ????xaxis_title_font_size=18,
          ????xaxis_tickfont_size=16,
          ????yaxis_title_text="Y軸-值",
          ????yaxis_title_font_size=18,
          ????yaxis_tickfont_size=16,
          ????hoverlabel_font_size=16,
          ????height=600,?
          ????width=600
          )
          fig.show()

          output

          28a04ce3aeb26bbe0db0095d0521409d.webp

          分組條形圖和堆積條形圖

          例如我們有多組數(shù)據(jù)想要繪制成柱狀圖的話,我們先來創(chuàng)建好數(shù)據(jù)集

                
                

          vals_2?=?np.ceil(100?*?np.random.rand(5)).astype(int)
          vals_3?=?np.ceil(100?*?np.random.rand(5)).astype(int)

          vals_array?=?[vals,?vals_2,?vals_3]

          然后我們遍歷獲取列表中的數(shù)值并且繪制成條形圖,代碼如下

                
                

          #?生成畫布
          fig?=?go.Figure()
          #?繪制圖表
          for?i,?vals?in?enumerate(vals_array):
          ????fig.add_trace(
          ????????go.Bar(x=keys,?y=vals,?name=f"Group?{i+1}",?hovertemplate=f"<b>Group?{i+1}</b><br><b>Key:</b>?%{{x}}<br><b>Value:</b>?%{{y}}<extra></extra>")
          ????)
          #?完善圖表
          fig.update_layout(
          ????barmode="group",
          ????......
          )
          fig.show()

          output

          7f0fd56368b063744caece1960f7e667.webp

          而我們想要變成堆積狀的條形圖,只需要修改代碼中的一處即可,將fig.update_layout(barmode="group")修改成fig.update_layout(barmode="group")即可,我們來看一下出來的樣子

          箱型圖

          箱型圖在數(shù)據(jù)統(tǒng)計(jì)分析當(dāng)中也是應(yīng)用相當(dāng)廣泛的,我們先來創(chuàng)建兩個(gè)假數(shù)據(jù)

                
                

          #?create?dummy?data?for?boxplots
          y1?=?np.random.normal(size=1000)
          y2?=?np.random.normal(size=1000)

          我們將上面生成的數(shù)據(jù)繪制成箱型圖,代碼如下

                
                

          #?生成畫布
          fig?=?go.Figure()
          #?繪制圖表
          fig.add_trace(
          ????go.Box(y=y1,?name="Dataset?1"),
          )
          fig.add_trace(
          ????go.Box(y=y2,?name="Dataset?2"),
          )
          fig.update_layout(
          ????......
          )
          fig.show()

          output

          799c8418e65baa7ec9790c75e993b781.webp

          散點(diǎn)圖和氣泡圖

          接下來我們嘗試來繪制一張散點(diǎn)圖,也是一樣的步驟,我們想嘗試生成一些假數(shù)據(jù),代碼如下
                
                

          x?=?[i?for?i?in?range(1,?10)]
          y?=?np.ceil(1000?*?np.random.rand(10)).astype(int)

          然后我們來繪制散點(diǎn)圖,調(diào)用的是Scatter()方法,代碼如下

                
                

          #?create?figure
          fig?=?go.Figure()

          fig.add_trace(
          ????go.Scatter(x=x,?y=y,?mode="markers",?hovertemplate="<b>x:</b>?%{x}<br><b>y:</b>?%{y}<extra></extra>")
          )

          fig.update_layout(
          ????.......
          )
          fig.show()

          output

          818258628d93aeaac3cd78ba5cde0e4b.webp

          那么氣泡圖的話就是在散點(diǎn)圖的基礎(chǔ)上,根據(jù)數(shù)值的大小來設(shè)定散點(diǎn)的大小,我們?cè)賮韯?chuàng)建一些假數(shù)據(jù)用來設(shè)定散點(diǎn)的大小,代碼如下
                
                s?=?np.ceil(30?*?np.random.rand(5)).astype(int)

          我們將上面用作繪制散點(diǎn)圖的代碼稍作修改,通過marker_size參數(shù)來設(shè)定散點(diǎn)的大小,如下所示

                
                

          fig?=?go.Figure()

          fig.add_trace(
          ????go.Scatter(x=x,?y=y,?mode="markers",?marker_size=s,?text=s,?hovertemplate="<b>x:</b>?%{x}<br><b>y:</b>?%{y}<br><b>Size:</b>?%{text}<extra></extra>")
          )
          fig.update_layout(
          ????......
          )
          fig.show()

          output

          88d97713b3885fd08e532b002aad1454.webp

          直方圖

          直方圖相比較于上面提到的幾種圖表,總體上來說會(huì)稍微有點(diǎn)丑,但是通過直方圖,讀者可以更加直觀地感受到數(shù)據(jù)的分布,我們先來創(chuàng)建一組假數(shù)據(jù),代碼如下
                
                

          ##?創(chuàng)建假數(shù)據(jù)
          data?=?np.random.normal(size=1000)

          然后我們來繪制直方圖,調(diào)用的是Histogram()方法,代碼如下

                
                

          #?創(chuàng)建畫布
          fig?=?go.Figure()
          #?繪制圖表
          fig.add_trace(
          ????go.Histogram(x=data,?hovertemplate="<b>Bin?Edges:</b>?%{x}<br><b>Count:</b>?%{y}<extra></extra>")
          )
          fig.update_layout(
          ????height=600,
          ????width=600
          )
          fig.show()

          output

          88115307ac92ded32c746f0e3f07a1e8.webp

          我們?cè)僭谏鲜鰣D表的基礎(chǔ)之上再進(jìn)行進(jìn)一步的格式優(yōu)化,代碼如下

                
                

          #?生成畫布
          fig?=?go.Figure()
          #?繪制圖表
          fig.add_trace(
          ????go.Histogram(x=data,?histnorm="probability",?hovertemplate="<b>Bin?Edges:</b>?%{x}<br><b>Count:</b>?%{y}<extra></extra>")
          )
          fig.update_layout(
          ????......
          )
          fig.show()

          output

          bb9ffd3099d9cec02253ac7e4dc7cade.webp

          多個(gè)子圖拼湊到一塊兒

          相信大家都知道在matplotlib模塊當(dāng)中的subplots()方法可以將多個(gè)子圖拼湊到一塊兒,那么同樣地在plotly當(dāng)中也可以同樣地將多個(gè)子圖拼湊到一塊兒,調(diào)用的是plotly模塊當(dāng)中make_subplots函數(shù)
                
                

          from?plotly.subplots?import?make_subplots
          ##?2行2列的圖表
          fig?=?make_subplots(rows=2,?cols=2)
          ##?生成一批假數(shù)據(jù)用于圖表的繪制
          x?=?[i?for?i?in?range(1,?11)]
          y?=?np.ceil(100?*?np.random.rand(10)).astype(int)
          s?=?np.ceil(30?*?np.random.rand(10)).astype(int)
          y1?=?np.random.normal(size=5000)
          y2?=?np.random.normal(size=5000)

          接下來我們將所要繪制的圖表添加到add_trace()方法當(dāng)中,代碼如下

                
                

          #?繪制圖表
          fig.add_trace(
          ????go.Bar(x=x,?y=y,?hovertemplate="<b>x:</b>?%{x}<br><b>y:</b>?%{y}<extra></extra>"),
          ????row=1,?col=1
          )
          fig.add_trace(
          ????go.Histogram(x=y1,?hovertemplate="<b>Bin?Edges:</b>?%{x}<br><b>Count:</b>?%{y}<extra></extra>"),
          ????row=1,?col=2
          )
          fig.add_trace(
          ????go.Scatter(x=x,?y=y,?mode="markers",?marker_size=s,?text=s,?hovertemplate="<b>x:</b>?%{x}<br><b>y:</b>?%{y}<br><b>Size:</b>?%{text}<extra></extra>"),
          ????row=2,?col=1
          )
          fig.add_trace(
          ????go.Box(y=y1,?name="Dataset?1"),
          ????row=2,?col=2
          )
          fig.add_trace(
          ????go.Box(y=y2,?name="Dataset?2"),
          ????row=2,?col=2
          )
          fig.update_xaxes(title_font_size=18,?tickfont_size=16)
          fig.update_yaxes(title_font_size=18,?tickfont_size=16)
          fig.update_layout(
          ????......
          )
          fig.show()

          output

          21c3586cb57dfd81029196ef57b37c4c.webp

          END


                  
                    

          推薦閱讀


          牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)

          牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)

          牛逼!Python函數(shù)和文件操作(長文系列第③篇)

          牛逼!Python錯(cuò)誤、異常和模塊(長文系列第④篇)

          
                          
          
                            


          吳恩達(dá)deeplearining.ai的經(jīng)典總結(jié)資料


          Ps:從小程序直接獲取下載

          瀏覽 31
          點(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>
                  三级片免费网址 | 亚洲最大在线视频 | 台湾无码黄片 | 俺来俺去在线3区 | 男人的天堂黄片 |