Python 繪圖栈暇,我只用 Matplotlib(三)—— 柱狀圖

圖片來自 unsplash

上篇文章,我已經(jīng)講解繪制圖像大致步驟箍镜,接下來的系列文章將分別對各種圖形做講解源祈。其實(shí)就是了解各個(gè)圖種的繪圖 API。文章就講解第一種圖形色迂,柱狀圖香缺。

1 基礎(chǔ)

繪制柱狀圖,我們主要用到bar()函數(shù)歇僧。只要將該函數(shù)理解透徹图张,我們就能繪制各種類型的柱狀圖。

我們先看下bar()的構(gòu)造函數(shù):bar(x,height祸轮, width兽埃,*,align='center'倔撞,**kwargs)

  • x
    包含所有柱子的下標(biāo)的列表

  • height
    包含所有柱子的高度值的列表

  • width
    每個(gè)柱子的寬度讲仰。可以指定一個(gè)固定值痪蝇,那么所有的柱子都是一樣的寬鄙陡⊥褐ⅲ或者設(shè)置一個(gè)列表祖秒,這樣可以分別對每個(gè)柱子設(shè)定不同的寬度征懈。

  • align
    柱子對齊方式屈呕,有兩個(gè)可選值:centeredge胸私。center表示每根柱子是根據(jù)下標(biāo)來對齊, edge則表示每根柱子全部以下標(biāo)為起點(diǎn)晨雳,然后顯示到下標(biāo)的右邊名党。如果不指定該參數(shù)遍尺,默認(rèn)值是center帝际。

其他可選參數(shù)有:

  • color
    每根柱子呈現(xiàn)的顏色蔓同。同樣可指定一個(gè)顏色值,讓所有柱子呈現(xiàn)同樣顏色蹲诀;或者指定帶有不同顏色的列表斑粱,讓不同柱子顯示不同顏色。

  • edgecolor
    每根柱子邊框的顏色脯爪。同樣可指定一個(gè)顏色值则北,讓所有柱子邊框呈現(xiàn)同樣顏色;或者指定帶有不同顏色的列表痕慢,讓不同柱子的邊框顯示不同顏色尚揣。

  • linewidth
    每根柱子的邊框?qū)挾取H绻麤]有設(shè)置該參數(shù)掖举,將使用默認(rèn)寬度快骗,默認(rèn)是沒有邊框。

  • tick_label
    每根柱子上顯示的標(biāo)簽塔次,默認(rèn)是沒有內(nèi)容滨巴。

  • xerr
    每根柱子頂部在橫軸方向的線段。如果指定一個(gè)固定值俺叭,所有柱子的線段將一直長恭取;如果指定一個(gè)帶有不同長度值的列表,那么柱子頂部的線段將呈現(xiàn)不同長度熄守。

  • yerr
    每根柱子頂端在縱軸方向的線段蜈垮。如果指定一個(gè)固定值耗跛,所有柱子的線段將一直長;如果指定一個(gè)帶有不同長度值的列表攒发,那么柱子頂部的線段將呈現(xiàn)不同長度调塌。

  • ecolor
    設(shè)置 xerr 和 yerr 的線段的顏色。同樣可以指定一個(gè)固定值或者一個(gè)列表惠猿。

  • capsize
    這個(gè)參數(shù)很有趣, 對xerr或者yerr的補(bǔ)充說明羔砾。一般為其設(shè)置一個(gè)整數(shù),例如 10偶妖。如果你已經(jīng)設(shè)置了
    yerr 參數(shù)姜凄,那么設(shè)置 capsize 參數(shù),會(huì)在每跟柱子頂部線段上面的首尾部分增加兩條垂直原來線段的線段趾访。對 xerr 參數(shù)也是同樣道理态秧。可能看說明會(huì)覺得繞扼鞋,如果你看下圖就一目了然了申鱼。

  • error_kw
    設(shè)置 xerr 和 yerr 參數(shù)顯示線段的參數(shù),它是個(gè)字典類型云头。如果你在該參數(shù)中又重新定義了 ecolor 和 capsize捐友,那么顯示效果以這個(gè)為準(zhǔn)。

  • log
    這個(gè)參數(shù)溃槐,我暫時(shí)搞不懂有什么用楚殿。

  • orientation
    設(shè)置柱子是顯示方式。設(shè)置值為 vertical 竿痰,那么顯示為柱形圖。如果設(shè)置為 horizontal 條形圖砌溺。不過 matplotlib 官網(wǎng)不建議直接使用這個(gè)來繪制條形圖影涉,使用barh來繪制條形圖。

下面我就調(diào)用 bar 函數(shù)繪制一個(gè)最簡單的柱形圖规伐。

import matplotlib.pyplot as plt
import numpy as np

# 創(chuàng)建一個(gè)點(diǎn)數(shù)為 8 x 6 的窗口, 并設(shè)置分辨率為 80像素/每英寸
plt.figure(figsize=(8, 6), dpi=80)

# 再創(chuàng)建一個(gè)規(guī)格為 1 x 1 的子圖
plt.subplot(1, 1, 1)

# 柱子總數(shù)
N = 6
# 包含每個(gè)柱子對應(yīng)值的序列
values = (25, 32, 34, 20, 41, 50)

# 包含每個(gè)柱子下標(biāo)的序列
index = np.arange(N)

# 柱子的寬度
width = 0.35

# 繪制柱狀圖, 每根柱子的顏色為紫羅蘭色
p2 = plt.bar(index, values, width, label="rainfall", color="#87CEFA")

# 設(shè)置橫軸標(biāo)簽
plt.xlabel('Months')
# 設(shè)置縱軸標(biāo)簽
plt.ylabel('rainfall (mm)')

# 添加標(biāo)題
plt.title('Monthly average rainfall')

# 添加縱橫軸的刻度
plt.xticks(index, ('Jan', 'Fub', 'Mar', 'Apr', 'May', 'Jun'))
plt.yticks(np.arange(0, 81, 10))

# 添加圖例
plt.legend(loc="upper right")

plt.show()

運(yùn)行結(jié)果為:


點(diǎn)擊查看大圖

2 進(jìn)階

bar 函數(shù)的參數(shù)很多蟹倾,你可以使用這些參數(shù)繪制你所需要柱形圖的樣式。如果你還不會(huì)靈活使用這樣參數(shù)猖闪,那就讓我們來學(xué)習(xí) matplotlib 官方提供的例子鲜棠。

# Credit: Josh Hemann

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
from collections import namedtuple

n_groups = 5

means_men = (20, 35, 30, 35, 27)
std_men = (2, 3, 4, 1, 2)

means_women = (25, 32, 34, 20, 25)
std_women = (3, 5, 2, 3, 3)

fig, ax = plt.subplots()

index = np.arange(n_groups)
bar_width = 0.35

opacity = 0.4
error_config = {'ecolor': '0.3'}

rects1 = ax.bar(index, means_men, bar_width,
                alpha=opacity, color='b',
                yerr=std_men, error_kw=error_config,
                label='Men')

rects2 = ax.bar(index + bar_width, means_women, bar_width,
                alpha=opacity, color='r',
                yerr=std_women, error_kw=error_config,
                label='Women')

ax.set_xlabel('Group')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(('A', 'B', 'C', 'D', 'E'))
ax.legend()

fig.tight_layout()
plt.show()

運(yùn)行結(jié)果如下:


點(diǎn)擊查看大圖

開動(dòng)你的大腦,想想還能繪制出什么樣式的柱形圖培慌。


上篇閱讀:徹底理解Iterable豁陆、Iterator、generator
推薦閱讀:Python 繪圖吵护,我只用 Matplotlib(二)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盒音,一起剝皮案震驚了整個(gè)濱河市表鳍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祥诽,老刑警劉巖譬圣,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異雄坪,居然都是意外死亡厘熟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門维哈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绳姨,“玉大人,你說我怎么就攤上這事笨农【屠拢” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵谒亦,是天一觀的道長竭宰。 經(jīng)常有香客問我,道長份招,這世上最難降的妖魔是什么切揭? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮锁摔,結(jié)果婚禮上廓旬,老公的妹妹穿的比我還像新娘。我一直安慰自己谐腰,他們只是感情好孕豹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著十气,像睡著了一般励背。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上砸西,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天叶眉,我揣著相機(jī)與錄音,去河邊找鬼芹枷。 笑死衅疙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸳慈。 我是一名探鬼主播饱溢,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼走芋!你這毒婦竟也來了理朋?” 一聲冷哼從身側(cè)響起絮识,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗽上,沒想到半個(gè)月后次舌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兽愤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年彼念,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浅萧。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逐沙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洼畅,到底是詐尸還是另有隱情吩案,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布帝簇,位于F島的核電站徘郭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丧肴。R本人自食惡果不足惜残揉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芋浮。 院中可真熱鬧抱环,春花似錦、人聲如沸纸巷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘤旨。三九已至梯啤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裆站,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工黔夭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宏胯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓本姥,卻偏偏與公主長得像肩袍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子婚惫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理氛赐,服務(wù)發(fā)現(xiàn)魂爪,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,110評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫艰管、插件滓侍、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,102評論 4 62
  • 今天過節(jié),做張應(yīng)景的圖片牲芋。
    喵咪敏閱讀 152評論 0 0
  • 同學(xué)在群里發(fā)了張圖 是他旅游途中拍的 拍照時(shí)還順便問了句 它叫什么名字 答案給他了 回來后卻忘了 按圖索驥無功 朋...
    武兵閱讀 264評論 0 0