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

          數(shù)據(jù)可視化|用堆疊條形圖進(jìn)行對比分析

          共 2253字,需瀏覽 5分鐘

           ·

          2020-06-26 23:21

          799c64dbfe5b7f4d616e5aca05224678.webp

          ? ?? 作者:林驥


          ? ? ?來源:林驥

          01

          你好,我是林驥。

          堆疊條形圖,用于展示不同類別之間占比數(shù)據(jù),常常能起到很好的對比效果。

          比如說,對某產(chǎn)品的不同功能進(jìn)行用戶調(diào)查,讓 100 個(gè)用戶分別按 1 ~ 5 分進(jìn)行評分,經(jīng)過統(tǒng)計(jì),得到每個(gè)功能對應(yīng)評分的人數(shù)占比如下:

          cb883cb95bb49a5f985637d787625791.webp

          對這組數(shù)據(jù)進(jìn)行對比分析,我們可以把它做成一張堆疊條形圖,效果如下:

          a6b685c6fd3d19af8ce79494abeece52.webp

          細(xì)心的讀者可能會(huì)發(fā)現(xiàn),這張圖中有一些刻意的設(shè)計(jì),例如 1 分和 2 分的條形顏色一樣,4 分和 5 分 的條形顏色也一樣,因?yàn)檫@里想要讓「好評」與「差評」之間的對比更加強(qiáng)烈,讓觀眾一眼就能看出,用戶對功能 A 的滿意度最高,對功能 B 很不滿意。

          與普通的條形圖相比,這張圖還有其他一些細(xì)節(jié)的改進(jìn),在此不再一一贅述,建議讀者自己去領(lǐng)會(huì)。

          數(shù)據(jù)可視化所做的工作,就是把數(shù)據(jù)背后的「故事」放進(jìn)圖表中展現(xiàn)出來,起到高效傳遞信息的作用。

          一個(gè)成功的數(shù)據(jù)可視化作品,不在于有多復(fù)雜的圖形,也不在于有多華麗的外表,而在于其背后生動(dòng)的故事。

          02

          下面是具體的實(shí)現(xiàn)方法。

          首先,導(dǎo)入所需的庫,并設(shè)置中文字體和定義顏色等。

          #?導(dǎo)入所需的庫
          import?numpy?as?np
          import?pandas?as?pd
          import?matplotlib?as?mpl
          import?matplotlib.pyplot?as?plt
          from?datetime?import?timedelta

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

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

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

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

          其次,從 Excel 文件中讀取隨機(jī)模擬的數(shù)據(jù),并定義畫圖用的數(shù)據(jù)。

          #?數(shù)據(jù)源路徑
          filepath='./data/用戶評分占比2.xlsx'

          #?讀取?Excel文件
          df?=?pd.read_excel(filepath,?index_col='功能')

          #?定義畫圖用的數(shù)據(jù)
          category_names?=?df.columns
          labels?=?df.index
          data?=?df.values
          data_cum?=?data.cumsum(axis=1)

          接下來,開始用「面向?qū)ο蟆沟姆椒ㄟM(jìn)行畫圖。

          #?使用「面向?qū)ο蟆沟姆椒ó媹D,定義圖片的大小
          fig,?ax=plt.subplots(figsize=(9,?5))

          #?設(shè)置標(biāo)題
          ax.set_title('\n用戶對功能?A?最為滿意\n\n',?fontsize=26,?loc='left',?color=c['深灰色'])

          #?倒轉(zhuǎn)?Y?軸,讓第一個(gè)功能排在最上面
          ax.invert_yaxis()

          #?隱藏?X?軸
          ax.xaxis.set_visible(False)
          #?設(shè)置?X?軸的范圍
          ax.set_xlim(0,?np.sum(data,?axis=1).max())

          #?定義顏色
          category_colors?=?[c['橙色'],?c['橙色'],?c['灰色'],?c['藍(lán)色'],?c['藍(lán)色']]

          #?畫堆疊水平條形圖
          for?i,?(colname,?color)?in?enumerate(zip(category_names,?category_colors)):
          ????widths?=?data[:,?i]
          ????starts?=?data_cum[:,?i]?-?widths
          ????ax.barh(labels,?widths,?left=starts,?height=0.68,?label=colname,?color=color,?edgecolor='w')
          ????xcenters?=?starts?+?widths?/?2

          ????#?設(shè)置數(shù)據(jù)標(biāo)簽及其文字顏色
          ????text_color?=?'w'
          ????for?y,?(x,?d)?in?enumerate(zip(xcenters,?widths)):
          ????????ax.text(x,?y,?'{:.0%}'.format(d),?ha='center',?va='center',?color=text_color,?fontsize=16)
          ????????
          #?顯示圖例
          l?=?ax.legend(ncol=len(category_names),?bbox_to_anchor=(-0.03,?0.95),loc='lower?left',?
          ??????????????fontsize=16,?frameon=False,?handlelength=0.6)

          #設(shè)置圖例中文本的顏色
          for?i,?text?in?zip(np.arange(len(l.get_texts())),?l.get_texts()):
          ????if?i?2:
          ????????text.set_color(c['橙色'])
          ????elif?i?3:
          ????????text.set_color(c['灰色'])
          ????else:
          ????????text.set_color(c['藍(lán)色'])

          #?隱藏邊框
          ax.spines['top'].set_visible(False)
          ax.spines['right'].set_visible(False)
          ax.spines['left'].set_visible(False)
          ax.spines['bottom'].set_visible(False)

          #?隱藏?Y?軸的刻度線
          ax.tick_params(axis='y',?which='major',?length=0)

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

          plt.show()

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

          03

          常見的數(shù)據(jù)可視化元素包括:坐標(biāo)位置、長度或高度、角度、面積、顏色變化等,不同元素表達(dá)數(shù)據(jù)的精確度也是不一樣的。

          比如說,人們對坐標(biāo)位置的變化比較敏感,但是很難從顏色變化中分辨出數(shù)據(jù)差異的大小。

          387c28d37a3f6aa467d052d82c298cb4.webp

          精心制作一個(gè)合適的圖表,至少有以下 3 個(gè)好處:

          (1)傳遞有效信息,提高溝通的精準(zhǔn)度。

          (2)獲得專業(yè)信任,提高數(shù)據(jù)的可信度。

          (3)塑造職業(yè)形象,提升職場的競爭力。


          ◆?◆?◆ ?◆?



          長按二維碼關(guān)注我們



          數(shù)據(jù)森麟公眾號的交流群已經(jīng)建立,許多小伙伴已經(jīng)加入其中,感謝大家的支持。大家可以在群里交流關(guān)于數(shù)據(jù)分析&數(shù)據(jù)挖掘的相關(guān)內(nèi)容,還沒有加入的小伙伴可以掃描下方管理員二維碼,進(jìn)群前一定要關(guān)注公眾號奧,關(guān)注后讓管理員幫忙拉進(jìn)群,期待大家的加入。


          管理員二維碼:


          猜你喜歡

          ?笑死人不償命的知乎沙雕問題排行榜

          ?用Python扒出B站那些“驚為天人”的阿婆主!

          ?全球股市跳水大戰(zhàn),誰最坑爹!

          ?華農(nóng)兄弟、徐大Sao&李子柒?誰才是B站美食區(qū)的最強(qiáng)王者?

          ?你相信逛B站也能學(xué)編程嗎

          瀏覽 77
          點(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>
                  狠狠亚洲 | 日本一级一片免费视频 | 操逼三级片 | 欧美日韩激情在线 | 无码成人在线观看 |