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

          對比學(xué)習(xí),用Excel和Python繪制「棒棒糖圖」

          共 4800字,需瀏覽 10分鐘

           ·

          2021-09-15 14:38

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書

          長安一片月,萬戶搗衣聲。

          大家好,我是云朵君!

          今天給大家?guī)硪黄容^有意思的可視化圖——棒棒糖圖詳細(xì)繪圖教程。對比Excel與Pyhton,手把手教你繪制高大上的棒棒糖圖。

          Excel繪制棒棒糖圖


          首先是數(shù)據(jù)準(zhǔn)備,首先將原始數(shù)據(jù)復(fù)制一列,得到兩列一樣的數(shù)據(jù)。

          選擇數(shù)據(jù),插入組合圖,分別設(shè)置柱狀圖和散點(diǎn)圖的組合圖表,確認(rèn)后既可以得到初步的棒棒糖圖。

          可根據(jù)需要設(shè)置相應(yīng)的樣式:

          其中設(shè)置x軸的位置相對較復(fù)雜些。

          首先選中y軸,右擊再點(diǎn)擊設(shè)置坐標(biāo)軸格式,接下來分別設(shè)置橫坐標(biāo)軸位置及橫坐標(biāo)軸標(biāo)簽。設(shè)置x坐標(biāo)軸值為0.8,或者你需要的軸。設(shè)置x坐標(biāo)軸標(biāo)簽在圖的底部。

          結(jié)果得到如下樣式。

          當(dāng)然,可以設(shè)置條形和散點(diǎn)的樣式,如顏色形狀等。也可以單獨(dú)選中某條柱狀圖和散點(diǎn)標(biāo)志的樣式,以突出某個(gè)或某些值。

          Python繪制棒棒糖圖


          Bar+Scatter組合法

          第一種方法,和Excel思路一樣,運(yùn)用條形圖(plt.bar)和散點(diǎn)圖(plt.scatter)組合繪制。如果想要不同的樣式,可以分別設(shè)置條形圖和散點(diǎn)圖的樣式,來改變整體樣式。

          n = len(values)
          colors1 = ["red"]+((n-1)*["olive"])
          colors2 = ["red"]+((n-1)*["blue"])
          plt.rcParams['figure.figsize'] = (23.510)  
          plt.bar(values.index, values.values, 
                  color=colors1, # 設(shè)置線條顏色
                  width=0.05)    # 設(shè)置線條寬度
          plt.scatter(values.index, values.values, 
                      color=colors2,# 設(shè)置標(biāo)記點(diǎn)寬度
                      s=50)         # 設(shè)置標(biāo)記點(diǎn)大小
          plt.show()

          設(shè)置樣式

          這一步主要實(shí)現(xiàn)將X軸向上移動(dòng)。

          • 將所有y值加上一個(gè)固定值v(負(fù)數(shù)):y = y+v
          • 并且設(shè)置y軸的下限為該固定值v :plt.ylim(v, 0.6)

          繪制一條橫線

          • 通過繪制折線的方法繪制一條基線,并固定 y=0
            plt.plot(values.index, [0]*n)
          • 或直接用直線函數(shù)繪制基線,同樣設(shè)置 y=0
            plt.axhline(y=0, xmin=0, xmax=1)
          • 上面兩種方法均可以繪制直線圖,第二種方法的缺點(diǎn)是在設(shè)置直線兩個(gè)端點(diǎn)時(shí),不太好把控,因?yàn)閤min和xmax設(shè)置的值在0~1之間的比例值。而第二種方法可以直接設(shè)置折線兩端點(diǎn)值。
          plt.style.use('ggplot')
          # plt.style.use('dark_background') # 設(shè)置黑色背景
          plt.rcParams['figure.figsize'] = (23.510)  
          plt.rcParams['axes.unicode_minus'] = False
          v = -0.8
          plt.bar(values.index, values.values+v, 
                  color=colors1,width=0.05)
          plt.scatter(values.index, values.values+v, 
                      color=colors2,s=60)
          # plt.plot(values.index,[0]*n,color='darkblue')
          plt.axhline(y=0,xmin=0.045, xmax=0.955
                      color='darkblue' , 
                      linestyle='--')
          plt.ylim(v,0.6)
          plt.show()

          Stem 函數(shù)法

          在python中,我們利用matplotlib.pyplot.stem可以直接繪制棒棒糖圖(莖葉圖)。這個(gè)函數(shù)只需要一行代碼就能繪制棒棒糖圖。下面來看看該神奇的plt.stem()的主要參數(shù)。

          stem(x,y, linefmt=None, markerfmt=None, basefmt=None)

          x : array-like, optional
          數(shù)據(jù)x軸

          y : array-like
          數(shù)據(jù)y軸

          linefmt : str, optional
          可以使用顏色和線型來設(shè)置垂直線的顏色和類型,如'r-',代表紅色的實(shí)線。

          markerfmt : str, optional
          設(shè)置頂點(diǎn)的類型和顏色,默認(rèn)值:'C0o'C(大寫字母C)是默認(rèn)的,后面數(shù)字應(yīng)該是0-9,改變顏色,最后的.或者o(小寫字母o)分別可以設(shè)置頂點(diǎn)為小實(shí)點(diǎn)或者大實(shí)點(diǎn)。

          basefmt : str, default: 'C3-' ('C2-' in classic mode)
          定義基線屬性的格式字符串。就是y=0的那條線

          從參數(shù)來看,使用其參數(shù)設(shè)置顏色,只能選用該函數(shù)設(shè)定好了的顏色圈內(nèi)的0-9號顏色。如果想要設(shè)置其他顏色,可以利用plt.setp來設(shè)置線條樣式。

           n = len(values2)
          colors1 = ["red"]+((n-1)*["olive"])
          (markers, stemlines, baseline) = plt.stem(values2, markerfmt="C0o")
          plt.setp(stemlines, 
                   linestyle="-"
                   color=colors1, 
                   linewidth=0.5 )  # 指定每行的屬性
          plt.setp(baseline, 
                   linestyle="--"
                   color="darkblue"
                   linewidth=2 )
          plt.show()

          通過設(shè)置參數(shù)bottom=0.8來調(diào)整基線位置,并設(shè)置背景樣式。

          plt.style.use('dark_background'
          plt.grid(0)
          (markers, stemlines, baseline) = plt.stem(values2, 
                                                    bottom=0.8,
                                                    markerfmt="C3o")
          plt.setp(stemlines, linestyle="-"
                   color="y", linewidth=2 )  
          plt.show()



          最后看下當(dāng)數(shù)據(jù)量超多的時(shí)候,繪制棒棒糖圖的效果。



          OK,今天的分享就到這里啦!

          沒看夠?點(diǎn)贊在看走起來~后續(xù)更精彩~

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請?jiān)诤笈_回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 93
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  欧美手机在线视频 | 欧美成人电影 | 欧美成人高清视频 | 欧美成人性爱网站 | 久久国产精品波多野结衣AV |