【Python Matplotlib 教程】第19课时-Matplotlib 柱状图

Matplotlib 柱状图

柱状图是一种以矩形条表示分类数据并且条的高度或长度与其所代表的值成比例的图表。这些条可以垂直或水平绘制。

柱状图显示离散类别之间的比较。图表的一个坐标轴显示要比较的具体类别,另一个坐标轴代表测量值。

Matplotlib API提供了 bar() 函数,可用于MATLAB样式的使用以及面向对象的API。通过axes对象使用bar()函数的签名如下-

ax.bar(x, height, width, bottom, align)

Python

Copy

该函数使用大小为(x-width=2, x+width=2, bottom, bottom+height)的界定矩形绘制条形图。

函数的参数为:

x一系列标量,表示条形图的x坐标。align用于控制x是条形图的中心(默认)还是左边缘。
height标量或一系列标量,表示条形图的高度。
width标量或者类数组,可选。条形图的宽度,默认为0.8。
bottom标量或者类数组,可选。条形图的y坐标,默认为None。
align{‘center’, ‘edge’},可选, 默认为‘center’。

该函数返回一个带有所有条形图的Matplotlib容器对象。

以下是Matplotlib条形图的一个简单示例。它展示了一个学院提供的各种课程的学生人数。

import matplotlib.pyplot as plt
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()

Python

Copy

Matplotlib 柱状图

当比较多个数量并改变一个变量时,我们可能希望建立一个柱状图,其中一个数量值对应一种颜色的柱子。

我们可以通过调整柱子的粗细和位置来绘制多个柱状图。数据变量包含三个系列的四个数值。以下脚本将展示四个柱子的三个柱状图。柱子的粗细为0.25个单位。每个柱状图将从上一个柱状图偏移0.25个单位。数据对象是一个多重字典,包含工程学院过去四年中三个专业的学生通过人数。

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)

Python

Copy

Matplotlib 柱状图

层叠条形图将表示不同组的条形放置在彼此之上。结果条形的高度显示了各组的合并结果。

pyplot.bar()函数的可选bottom参数允许您为条形指定一个起始值。它不再从零到一个值,而是从底部到该值。第一次调用pyplot.bar()绘制蓝色条形。第二次调用pyplot.bar()绘制红色条形,蓝色条形的底部位于红色条形的顶部。

import numpy as np
import matplotlib.pyplot as plt
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('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['Men', 'Women'])
plt.show()

Python

Copy

Matplotlib 柱状图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程作品集

你的赞赏将带来极佳的运气和才气

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值