bar()
函数来绘制柱状图,它可以应用在 MATLAB 样式以及面向对象的绘图方法中。当它与 axes 对象一起使用时,其语法格式如下:ax.bar(x, height, width, bottom, align)
该函数的参数说明,如下表所示:x | 一个标量序列,代表柱状图的x坐标,默认x取值是每个柱状图所在的中点位置,或者也可以是柱状图左侧边缘位置。 |
height | 一个标量或者是标量序列,代表柱状图的高度。 |
width | 可选参数,标量或类数组,柱状图的默认宽度值为 0.8。 |
bottom | 可选参数,标量或类数组,柱状图的y坐标默认为None。 |
algin | 有两个可选项 {"center","edge"},默认为 'center',该参数决定 x 值位于柱状图的位置。 |
import matplotlib.pyplot as plt #创建图形对象 fig = plt.figure() #添加子图区域,参数值表示[left, bottom, width, height ] 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()输出结果如下:
图1:matplotlib bar()绘图
import numpy as np import matplotlib.pyplot as plt #准备数据 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)上述代码执行后,将显示四个柱状图,将每个柱状图又均分为三个小柱状图,每个柱状图占据 0.25 个单位。
图2:matplotlib绘图
bottom
,该参数可以指定柱状图开始堆叠的起始值,一般从底部柱状图的最大值开始,依次类推。import numpy as np import matplotlib.pyplot as plt countries = ['USA', 'India', 'China', 'Russia', 'Germany'] bronzes = np.array([38, 17, 26, 19, 15]) silvers = np.array([37, 23, 18, 18, 10]) golds = np.array([46, 27, 26, 19, 17]) # 此处的 _ 下划线表示将循环取到的值放弃,只得到[0,1,2,3,4] ind = [x for x, _ in enumerate(countries)] #绘制堆叠图 plt.bar(ind, golds, width=0.5, label='golds', color='gold', bottom=silvers+bronzes) plt.bar(ind, silvers, width=0.5, label='silvers', color='silver', bottom=bronzes) plt.bar(ind, bronzes, width=0.5, label='bronzes', color='#CD853F') #设置坐标轴 plt.xticks(ind, countries) plt.ylabel("Medals") plt.xlabel("Countries") plt.legend(loc="upper right") plt.title("2019 Olympics Top Scorers") plt.show()在上述代码中,第一次调用
plt.bar()
绘制了黄色柱状图, 第二次调用plot.bar()
时绘制了灰色柱状图,最后一次调用plt.bar()
则绘制最底部的柱状图。两个柱状图相接触的位置就是顶部与底部的位置,这样就构成了柱状堆叠图。
图3:柱状堆叠图
本文链接:http://task.lmcjl.com/news/15693.html