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>

        數(shù)據(jù)可視化:用雷達圖進行對比分析

        共 3368字,需瀏覽 7分鐘

         ·

        2020-07-10 00:15

        e6398590d98c45b38f448432a597dacd.webp

        導讀:雷達圖的背景一圈一圈像雷達,用多邊形來展現(xiàn)數(shù)據(jù)的大小,我認為比較適合用于有多種不同維度的情形,是發(fā)現(xiàn)差距的一種好工具。


        作者 / 來源:林驥(ID:linjiwx)



        01


        比如說,「得到 APP」上的學分構(gòu)成包括 5 個不同維度,我根據(jù)自己的學分構(gòu)成及其變化,制作了一張雷達圖。
        7bb933d4592b4776784777bd561f8b5d.webp
        其中「持續(xù)性」與學習的天數(shù)相關,「學習量」與聽課或看書的數(shù)量相關,「筆記」與筆記的數(shù)量和互動相關,「知識分享」與分享轉(zhuǎn)發(fā)的次數(shù)相關,「好奇心」與搜索的次數(shù)和廣度相關。
        從圖中可以看出,在 2020 年的年初,我在筆記方面還比較薄弱,經(jīng)過努力,我做筆記的數(shù)量明顯增加了。
        借助雷達圖,我們可以直觀地看到差距,進而通過分析,更好地進行改善。

        02


        接下來,我們看看用?Matplotlib 畫圖的具體步驟。
        首先,導入所需的庫,并設置中文字體和定義顏色等。
        #?導入所需的庫
        import?numpy?as?np
        import?pandas?as?pd
        import?matplotlib?as?mpl
        import?matplotlib.pyplot?as?plt
        import?matplotlib.image?as?image

        #?正常顯示中文標簽
        mpl.rcParams['font.sans-serif']?=?['SimHei']

        #?自動適應布局
        mpl.rcParams.update({'figure.autolayout':?True})

        #?正常顯示負號
        mpl.rcParams['axes.unicode_minus']?=?False

        #?禁用科學計數(shù)法
        pd.set_option('display.float_format',?lambda?x:?'%.2f'?%?x)?

        #?定義顏色,主色:藍色,輔助色:灰色,互補色:橙色
        c?=?{'藍色':'#00589F',?'深藍色':'#003867',?'淺藍色':'#5D9BCF',
        ?????'灰色':'#999999',?'深灰色':'#666666',?'淺灰色':'#CCCCCC',
        ?????'橙色':'#F68F00',?'深橙色':'#A05D00',?'淺橙色':'#FBC171'}

        其次,從 Excel 文件中讀取數(shù)據(jù),并定義畫圖用的數(shù)據(jù)。
        #?數(shù)據(jù)源路徑
        filepath='./data/林驥的學分構(gòu)成.xlsx'

        #?讀取?Excel文件
        df?=?pd.read_excel(filepath)

        #?提取畫圖所需的數(shù)據(jù)
        data0?=?df.iloc[0,?2:].values
        data1?=?df.iloc[1,?2:].values

        #提取標簽
        label?=?np.array(df.iloc[1,?2:].index)

        #?根據(jù)分數(shù)添加評級的標簽
        for?i,?d?in?enumerate(data1):
        ????if?d?>?4:
        ????????grade?=?'A^+'
        ????elif?d?==?4:
        ????????grade?=?'A'
        ????elif?d?>?3:
        ????????grade?=?'B^+'
        ????elif?d?==?3:
        ????????grade?=?'B'
        ????else:
        ????????grade?=?'B^-'
        ????label[i]?+=?'\n'?+?r'$\bf{'?+?grade?+?'}$'


        #?data?有幾個數(shù)據(jù),就把整圓?360°?分成幾份
        angle?=?np.linspace(0,?2*np.pi,?len(data0),?endpoint=False)

        #?增加第一個?angle?到所有?angle?里,以實現(xiàn)閉合
        angles?=?np.concatenate((angle,?[angle[0]]))

        #?倒轉(zhuǎn)順序,以讓雷達圖順時針顯示
        angles?=?angles[::-1]

        #增加第一個?data?到所有的?data?里,以實現(xiàn)閉合
        data0?=?np.concatenate((data0,?[data0[0]]))
        data1?=?np.concatenate((data1,?[data1[0]]))

        接下來,開始用「面向?qū)ο蟆沟姆椒ㄟM行畫圖。
        #?使用「面向?qū)ο蟆沟姆椒ó媹D,定義圖片的大小
        fig,?ax=plt.subplots(figsize=(8,?8),?subplot_kw=dict(polar=True))

        #?設置背景顏色
        fig.set_facecolor('w')
        ax.set_facecolor('w')

        #?設置標題
        ax.set_title('\n林驥的學分構(gòu)成及其變化\n\n',?fontsize=26,?loc='left',?color=c['深灰色'])?

        #?設置網(wǎng)格標簽
        ax.set_thetagrids(angles*180/np.pi,?labels=label)

        #?畫雷達圖,用順時針顯示
        ax.plot(angles,?data0,?'o-',?label=df.iloc[0,?0].strftime('%Y-%m-%d'))
        ax.plot(angles,?data1,?'o-',?label=df.iloc[1,?0].strftime('%Y-%m-%d'))

        #?設置極坐標?0°?的位置
        ax.set_theta_zero_location('N')?

        #?設置顯示的極徑范圍
        ax.set_rlim(0,?5)

        #?填充顏色
        ax.fill(angles,?data0,?facecolor=c['淺藍色'],?alpha=0.6)
        ax.fill(angles,?data1,?facecolor=c['淺橙色'],?alpha=0.6)

        #?設置極徑標簽,放在第一象限的中間位置
        ax.set_rlabel_position(360-360/len(data0)/2)

        #?設置圖例顯示的位置
        l?=?ax.legend(ncol=2,?loc='lower?center',?frameon=False,?borderaxespad=-3,?fontsize=13)
        for?text?in?l.get_texts():
        ????text.set_color(c['深灰色'])
        #?????text.set_size(13)

        #?去掉最外圍的黑圈
        ax.spines['polar'].set_visible(False)?

        #?設置坐標標簽字體大小和顏色
        ax.tick_params(labelsize=16,?colors=c['深灰色'])

        plt.show()

        下載畫圖用的數(shù)據(jù)和完整代碼,你可以前往:https://github.com/linjiwx/mp


        03


        雷達在展現(xiàn)多個維度的得分或性能方面,效果不錯,在財務分析和標桿管理中有著廣泛的應用。
        另外,在一些游戲中,也有用雷達圖來展現(xiàn)人物的能力。
        但是,雷達圖也有一些自身的缺點,包括:
        1. 如果在一個雷達圖中展現(xiàn)超過 2 組數(shù)據(jù),會讓圖表難以閱讀。
        2. 變量的個數(shù)不宜過多,否則密密麻麻的線條可能讓人抓不到重點。
        3. 從表達數(shù)據(jù)的精確度來看,極坐標中的角度,不如直角坐標中的位置。

        同樣的數(shù)據(jù),不同人得出的觀點可能不一樣,圖表的選擇可能也不一樣,我們通常需要考慮以下幾個因素:


        1. 分析提煉的信息;
        2. 所屬數(shù)據(jù)的類型;
        3. 想要表達的觀點;
        4. 想要強調(diào)的信息。

        很多人作圖有一種誤區(qū),就是喜歡運用所謂的技巧和創(chuàng)新,做出讓人難以看懂的復雜圖表,這與圖表的目的背道而馳,是我們應該避免的。
        6591364c0a64aa0a7957f5cacc545cfd.webp
        劃重點?

        干貨直達?

        更多精彩?

        在公眾號對話框輸入以下關鍵詞查看更多優(yōu)質(zhì)內(nèi)容!
        PPT?|?讀書?|?書單?|?硬核?|?干貨?|?講明白大數(shù)據(jù)?|?云計算?|?數(shù)據(jù)庫?|?Python?|?可視化?|?神操作AI?|?人工智能?|?機器學習?|?深度學習?|?神經(jīng)網(wǎng)絡5G?|?中臺?|?用戶畫像?|?1024?|?大神?|?數(shù)學?|?揭秘
        據(jù)統(tǒng)計,99%的大咖都完成了這個神操作?

        de62c5977c2b9495854fb8b4194766c0.webp


        瀏覽 127
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        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>
            我在厨房摸岳的乳hd在线观看 | 国产美女被 | 国产精品一级AV片免费看 | 五十路av | 青青无码| 欧美一区二区三区爽爽爽 | 樱桃一区二区三区 | 囯产精品久久久久久久久久久 | 女女同性女同1区二区三 | 三级影片欧美 |