折線圖和散點圖常用且實用步责,但是并不能滿足我們的作圖需求挺尾。
這次我們會嘗試更多常見的統(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()
參數(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()
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()
參數(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:我們可以用一個列表指定不同分類的顏色?
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()
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ù)進行可視化。
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的簡寫蜡娶。
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()
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è)置為綠色低剔。
好了速梗,以上就是今天要分享的幾種常用的統(tǒng)計圖形,今天我們的目標就是掌握這些圖形對應(yīng)的函數(shù)的基本調(diào)用襟齿,后邊我們會詳細探索它們在實際的數(shù)據(jù)分析過程中的應(yīng)用姻锁。