條形圖或條狀圖是一種圖表或圖形,它顯示帶有矩形條的分類數(shù)據(jù),其高度或長(zhǎng)度與它們所代表的值成比例。可以垂直或水平繪制條形。
條形圖顯示了離散類別之間的比較。圖表的一個(gè)軸顯示要比較的特定類別,另一個(gè)軸表示測(cè)量值。
Matplotlib API提供了bar()函數(shù),可以在MATLAB樣式使用以及面向?qū)ο蟮腁PI中使用。與axis對(duì)象一起使用的bar()函數(shù)的簽名如下 -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 ax.bar(x, height, width, bottom, align)
該函數(shù)使用大小為(x ?width = 2; x + width=2; bottom; bottom + height)來(lái)綁定矩形創(chuàng)建條形圖。
該函數(shù)的參數(shù)是 -
x - 表示條形的x坐標(biāo)的標(biāo)量序列。如果x是條形中心(默認(rèn))或左邊緣,則對(duì)齊控件。 height - 標(biāo)量或標(biāo)量序列表示條的高度。 width - 標(biāo)量或類似數(shù)組,可選。條形的寬度默認(rèn)為0.8。 bottom - 標(biāo)量或類似數(shù)組,可選。條形的y坐標(biāo)默認(rèn)為None。 align - {'center','edge'},可選,默認(rèn):center。
該函數(shù)返回包含所有條形的Matplotlib容器對(duì)象。以下是Matplotlib條形圖的簡(jiǎn)單示例。它顯示了在一所學(xué)院提供的各種課程的學(xué)生人數(shù)。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 #! /usr/bin/env python #coding=utf-8 import matplotlib.pyplot as plt import numpy as np import math plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字體) plt.rcParams['axes.unicode_minus'] = False # 原文出自【立地貨】,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)請(qǐng)保留原文鏈接: fig = plt.figure() ax = fig.add_axes([0,0,1,1]) langs = ['C', 'C++', 'Java', 'Python', 'PHP'] students = [23,17,35,29,12] ax.bar(langs,students) plt.show()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
當(dāng)比較多個(gè)數(shù)量和更改一個(gè)變量時(shí),可能需要一個(gè)條形圖,其中有一個(gè)顏色的條形圖用于一個(gè)數(shù)量值。
可以通過使用條形的厚度和位置來(lái)繪制多個(gè)條形圖。數(shù)據(jù)變量包含三個(gè)系列的四個(gè)值。以下腳本將顯示四個(gè)條形圖的三個(gè)條形圖。這些條的厚度為0.25個(gè)單位。每個(gè)條形圖將從前一個(gè)移動(dòng)0.25個(gè)單位。數(shù)據(jù)對(duì)象是一個(gè)多元圖,包含過去四年在工程學(xué)院的三個(gè)分支中通過的學(xué)生數(shù)量。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 #! /usr/bin/env python #coding=utf-8 import matplotlib.pyplot as plt import numpy as np import math plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字體) plt.rcParams['axes.unicode_minus'] = False # 原文出自【立地貨】,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)請(qǐng)保留原文鏈接: data = [[30, 25, 50, 20], [40, 23, 51, 17], [35, 22, 45, 19]] X = np.arange(4) fig = plt.figure() ax = fig.add_axes([0,0,1,1]) ax.bar(X + 0.00, data[0], color = 'b', width = 0.25) ax.bar(X + 0.25, data[1], color = 'g', width = 0.25) ax.bar(X + 0.50, data[2], color = 'r', width = 0.25) plt.show()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
堆積條形圖堆疊表示彼此頂部的不同組的條形圖。結(jié)果為條形圖的高度顯示組的組合結(jié)果。
pyplot.bar()函數(shù)的可選bottom參數(shù)指定條的起始值。它不是從零運(yùn)行到一個(gè)值,而是從底部到值。第一次調(diào)用pyplot.bar()繪制藍(lán)條。第二次調(diào)用pyplot.bar()繪制紅色條形圖,藍(lán)色條形圖的底部位于紅色條形圖的頂部。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 #! /usr/bin/env python #coding=utf-8 import matplotlib.pyplot as plt import numpy as np import math plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字體) plt.rcParams['axes.unicode_minus'] = False # 原文出自【立地貨】,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)請(qǐng)保留原文鏈接: N = 5 menMeans = (20, 35, 30, 35, 27) womenMeans = (25, 32, 34, 20, 25) ind = np.arange(N) # the x locations for the groups width = 0.35 fig = plt.figure() ax = fig.add_axes([0,0,1,1]) ax.bar(ind, menMeans, width, color='r') ax.bar(ind, womenMeans, width,bottom=menMeans, color='b') ax.set_ylabel('分?jǐn)?shù)') ax.set_title('按組和性別分?jǐn)?shù)') ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5')) ax.set_yticks(np.arange(0, 81, 10)) ax.legend(labels=['男', '女']) plt.show()
執(zhí)行上面示例代碼,得到以下結(jié)果 -