從零開始學(xué)Python可視化(二): 統(tǒng)計圖形入門

折線圖和散點圖常用且實用步责,但是并不能滿足我們的作圖需求挺尾。

這次我們會嘗試更多常見的統(tǒng)計圖形鹅搪,比如條形圖、直方圖潦嘶、餅圖等涩嚣,我們的目標是掌握工作學(xué)習(xí)過程中使用最頻繁的圖形技能。


歡迎大家關(guān)注我的個人博客【數(shù)洞】 【備用站】

1. 柱狀圖(條形圖) —— bar() / barh()

柱狀圖又叫條形圖掂僵,用于繪制定性(分類)數(shù)據(jù)的分布特征航厚,比如不同國家的GDP、不同年齡段的平均體重等锰蓬。這次幔睬,我們以一組學(xué)生的身高來演示它的作圖方法。

import matplotlib.pyplot as plt

# 生成數(shù)據(jù)
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [176, 165, 188, 150, 170, 180, 172, 160]

# 畫柱狀圖
plt.bar(x, y, 
        align = 'center', 
        color = 'c', 
        tick_label = ['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'], 
        hatch = '/')

# 設(shè)置軸標簽
plt.xlabel('學(xué)生編號')
plt.ylabel('身高(cm)')

plt.show()
image

參數(shù):

  • align:對齊方式芹扭,即條形相對于刻度的位置
  • color:顏色
  • tick_label:刻度的標簽
  • hatch:填充

我們還可以使用barh畫水平(horizontal)方向的條形圖麻顶,它們兩個函數(shù)的參數(shù)基本一致,只是我們要將xlabel和ylabel的值對調(diào)一下(注意:x和y不需要對調(diào)):

import matplotlib.pyplot as plt

# 生成數(shù)據(jù)
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [176, 165, 188, 150, 170, 180, 172, 160]

# 畫柱狀圖
plt.barh(x, y, 
        align = 'center', 
        color = 'c', 
        tick_label = ['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'], 
        hatch = '/')

# 設(shè)置軸標簽
plt.xlabel('身高(cm)')
plt.ylabel('學(xué)生編號')

plt.show()
image

2. 直方圖 —— hist()

直方圖跟條形圖很像舱卡,但是直方圖是用于表現(xiàn)定量數(shù)據(jù)的分布辅肾,比如說中國人口的年齡分布情況、一所高中高三所有學(xué)生的高考成績的分布情況等轮锥。跟bar()barh()不同的是矫钓,hist()函數(shù)輸入的只有一組數(shù)據(jù),在輸出的圖形中舍杜,橫坐標對應(yīng)著不同的分組新娜,縱坐標則對應(yīng)著該組的計數(shù)。

import matplotlib.pyplot as plt
import numpy as np

# 生成數(shù)據(jù)
x = np.random.randint(0, 10, 500)

# 直方圖
plt.hist(x,
        bins = range(0, 11),
        color = 'g',
        histtype = 'bar', 
        rwidth = 0.95,
        alpha = 0.6)

# 設(shè)置軸標簽
plt.xlabel('分組')
plt.ylabel('計數(shù)')

plt.show()
image

參數(shù):

  • bins:如果參數(shù)是一個整數(shù)既绩,則相當于我們制定了分桶的數(shù)量概龄,如果參數(shù)是一個列表,則相當于我們指定了每個分桶的邊界饲握。
  • histtype:分桶樣式
  • rwidth:相對寬度私杜,即每個柱子寬度相對于兩個刻度之間寬度的比例。
  • alpha:透明度

3. 餅圖 —— pie()

餅圖主要用于繪制不同類型的百分比救欧,比如不同國家的人口占比衰粹、一個員工的薪資構(gòu)成等。我們假設(shè)有ABCD四個公司颜矿,他們瓜分了一塊市場寄猩,我們用餅圖來將他們的市場占有情況表現(xiàn)出來:

import matplotlib.pyplot as plt
import numpy as np

# 生成數(shù)據(jù)
ratio = [0.1, 0.4, 0.35, 0.15]
labels = ['A', 'B', 'C', 'D']

# 直方圖
plt.pie(ratio, labels=labels, autopct='%3.1f%%', startangle=90)

# 設(shè)置軸標簽
plt.title('不同公司市場占比')

plt.show()

參數(shù):

  • labels: 類別標簽/名稱
  • autopct:餅圖種比例數(shù)字的格式
  • startangle:起始角度,默認會逆時針從水平0度角開始排列
  • color:我們可以用一個列表指定不同分類的顏色?
image

4. 極線圖 —— polar()

這一函數(shù)用于在極坐標軸上繪制折線圖骑疆。

import matplotlib.pyplot as plt
import numpy as np

# 生成數(shù)據(jù)
theta = np.linspace(0, 2*np.pi, 12, endpoint=False)
r = np.random.rand(12)

# 極線圖
plt.polar(theta, r,
         color = 'chartreuse',
         linewidth = 2,
         marker = '*',
         mfc = 'b',
         ms = 10)

plt.show()
image

5. 散點圖 —— scatter()

我們在之前已經(jīng)接觸過散點圖了田篇,但是這次我們將展示更強大的散點圖替废。

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

# 生成數(shù)據(jù)
x = np.random.randn(100)
y = np.random.randn(100)

# 散點圖
plt.scatter(x, y,
           s = np.power(10*x+20*y, 2),
           c = np.random.rand(100),
           cmap = mpl.cm.RdYlBu,
           marker = 'o',
           alpha = 0.3)
)

plt.show()

我們指定了橫縱坐標的數(shù)據(jù)、每個點的大小泊柬、每個點的顏色以及浮點數(shù)到顏色的映射表椎镣、標記的形狀以及透明度,看兽赁,通過這種方式状答,我們可以對多維數(shù)據(jù)進行可視化。

image

6. 桿圖 —— stem()

劉大成先生在《Python數(shù)據(jù)可視化之matplotlib實踐》一書中將其翻譯為棉棒圖刀崖,挺形象的惊科,但是我還是強行使用了桿圖的名字,雖然這個名字簡直難聽到了天際……

桿圖用于繪制離散而有序的數(shù)據(jù)亮钦,在圖中馆截,這些離散的點會分布在一條基線的上下兩側(cè),我們可以直觀地感受到它們的波動趨勢以及分布情況蜂莉。

import matplotlib.pyplot as plt
import numpy as np

# 生成數(shù)據(jù)
x = np.linspace(0, 10, 20)
y = np.random.randn(20)

# 繪圖
plt.stem(x, y, linefmt='-.', markerfmt='o', basefmt='-')

plt.show()

參數(shù):

  • linefmt:離散點到基線的垂線的樣式
  • markerfmt:離散點的樣式
  • basefmt:基線的樣式

這里fmt是format的簡寫蜡娶。

image

7. 箱線圖 —— boxplot()

箱線圖是非常經(jīng)典、實用且常用的一種用于觀察連續(xù)數(shù)據(jù)分布的圖形映穗,它能清晰地展示出數(shù)據(jù)的上下四分位數(shù)窖张、上下邊緣、中位數(shù)的位置蚁滋,還能根據(jù)規(guī)則幫助我們確定一些異常值宿接,是觀察數(shù)據(jù)分布的一大利器。

import matplotlib.pyplot as plt
import numpy as np

# 生成數(shù)據(jù)
x = np.random.randn(1000)

# 繪圖
plt.boxplot(x)

# 添加網(wǎng)格
plt.grid(axis='y', ls=':', lw=1, color='gray', alpha=0.4)

plt.show()
image

8. 誤差棒圖 —— errorbar()

此函數(shù)用于繪制y軸方向或者x軸方向的誤差范圍:

import matplotlib.pyplot as plt
import numpy as np

# 生成數(shù)據(jù)
x = np.linspace(0, 1, 10)
y = np.exp(x)

# 繪圖
plt.errorbar(x, y, fmt=':og', yerr=np.power(x, 2), xerr=0.02)

plt.show()

這里我們使用橫坐標的平方作為y軸方向上的誤差枢赔,同時使用一個常數(shù)0.02作為x軸方向上的誤差澄阳。在fmt(format)參數(shù)下拥知,我們使用':og'將線條設(shè)置為虛線踏拜、將數(shù)據(jù)點設(shè)置為大圓點、將顏色設(shè)置為綠色低剔。

image

好了速梗,以上就是今天要分享的幾種常用的統(tǒng)計圖形,今天我們的目標就是掌握這些圖形對應(yīng)的函數(shù)的基本調(diào)用襟齿,后邊我們會詳細探索它們在實際的數(shù)據(jù)分析過程中的應(yīng)用姻锁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市猜欺,隨后出現(xiàn)的幾起案子位隶,更是在濱河造成了極大的恐慌,老刑警劉巖开皿,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涧黄,死亡現(xiàn)場離奇詭異篮昧,居然都是意外死亡,警方通過查閱死者的電腦和手機笋妥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門懊昨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人春宣,你說我怎么就攤上這事酵颁。” “怎么了月帝?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵躏惋,是天一觀的道長。 經(jīng)常有香客問我嚷辅,道長其掂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任潦蝇,我火速辦了婚禮款熬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攘乒。我一直安慰自己贤牛,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布则酝。 她就那樣靜靜地躺著殉簸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沽讹。 梳的紋絲不亂的頭發(fā)上般卑,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音爽雄,去河邊找鬼蝠检。 笑死,一個胖子當著我的面吹牛挚瘟,可吹牛的內(nèi)容都是我干的叹谁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼乘盖,長吁一口氣:“原來是場噩夢啊……” “哼焰檩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起订框,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤析苫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衩侥,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡浪腐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了顿乒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片议街。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖璧榄,靈堂內(nèi)的尸體忽然破棺而出特漩,到底是詐尸還是另有隱情,我是刑警寧澤骨杂,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布涂身,位于F島的核電站,受9級特大地震影響搓蚪,放射性物質(zhì)發(fā)生泄漏蛤售。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一妒潭、第九天 我趴在偏房一處隱蔽的房頂上張望悴能。 院中可真熱鬧,春花似錦雳灾、人聲如沸漠酿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炒嘲。三九已至,卻和暖如春匈庭,著一層夾襖步出監(jiān)牢的瞬間夫凸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工阱持, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夭拌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓紊选,卻偏偏與公主長得像啼止,于是被迫代替她去往敵國和親道逗。 傳聞我的和親對象是個殘疾皇子兵罢,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 圖形初步 在本章中,我們將討論處理圖形的一般方法滓窍。我們首先探討如何創(chuàng)建和保存圖形卖词,然后關(guān)注如何修改那些存在于所有圖...
    jplee閱讀 5,024評論 0 12
  • Matplotlib 入門教程 來源:Introduction to Matplotlib and basic l...
    布客飛龍閱讀 31,798評論 5 162
  • 六此蜈、可視化 原文:Visualization 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯...
    布客飛龍閱讀 1,260評論 0 2
  • 寫在前面 ggplot2 是一個功能強大且靈活的R包 即横,由Hadley Wickham 編寫,其用于生成優(yōu)雅的圖...
    Boer223閱讀 28,104評論 0 67
  • 任性的流云在天空翻滾成一朵朵浪花 像極了官袍上“江崖海水”的紋飾 心中有仙鶴裆赵,何必在意做不做官 散了鴛鴦东囚,便潛心做...
    芳橋日記閱讀 167評論 0 0