求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 


业务架构设计
4月18-19日 在线直播



基于UML和EA进行系统分析设计
4月25-26日 北京+在线



AI 智能化软件测试方法与实践
5月23-24日 上海+在线
 
追随技术信仰

随时听讲座
每天看新闻
 
 
Matplotlib教程
1.数据可视化是什么
2.Matplotlib是什么
3.Matplotlib下载和安装
4.Matplotlib.pyplot接口汇总
5.第一个Matplotlib绘图程序
6.PyLab绘制曲线图
7.Matplotlib figure图形对象
8.Matplotlib axes类使用详解
9.Matplotlib subplot()函数用法详解
10.Matplotlib subplots()函数详解
11.Matplotlib subplot2grid()函数详解
12.Matplotlib设置网格格式
13.Matplotlib设置坐标轴格式
14.Matplotlib设置坐标轴范围
15.Matplotlib设置刻度和标签
16.Matplotlib中文乱码解决方案
17.Matplotlib双轴图
18.Matplotlib设置刻度和标签
19.Matplotlib柱状图
20.Matplotlib直方图
21.Matplotlib饼状图
22.Matplotlib折线图
23.Python Matplotlib散点图
24.Matplotlib等高线图
25.Matplotlib振动图
26.Matplotlib箱型图
27.Matplotlib提琴图
28.Python Matplotlib 3D绘图详解
29.Matplotlib绘制文本
30.Matplotlib数学表达式
31.Matplotlib image图像处理
32.Matplotlib转换对象
 

 
目录
 
Matplotlib柱状图(代码+注释详解)
来源:C语言中文网
118 次浏览
3次  

柱状图是一种用矩形柱来表示数据分类的图表,柱状图可以垂直绘制,也可以水平绘制,它的高度与其所表示的数值成正比关系。柱状图显示了不同类别之间的比较关系,图表的水平轴 X 指定被比较的类别,垂直轴 Y 则表示具体的类别值。

Matplotlib 提供了 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 值位于柱状图的位置。

该函数的返回值是一个 Matplotlib 容器对象,该对象包含了所有柱状图。

下面是一个关于 Matplotlib 柱状图的简单示例。它用来显示了不同编程语言的学习人数。

  1. import matplotlib.pyplot as plt
  2. #创建图形对象
  3. fig = plt.figure()
  4. #添加子图区域,参数值表示[left, bottom, width, height ]
  5. ax = fig.add_axes([0,0,1,1])
  6. #准备数据
  7. langs = ['C', 'C++', 'Java', 'Python', 'PHP']
  8. students = [23,17,35,29,12]
  9. #绘制柱状图
  10. ax.bar(langs,students)
  11. plt.show()

输出结果如下:

图1:matplotlib bar()绘图

通过调整柱状图的宽度,可以实现在同一 x 轴位置绘制多个柱状图。您可以将它们设置成不同的颜色,从而使它们更容易区分。下面示例描述了某工程学院过去四年中,三个专业录取的统招学生数量。

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. #准备数据
  4. data =
  5. [[30, 25, 50, 20],
  6. [40, 23, 51, 17],
  7. [35, 22, 45, 19]]
  8. X = np.arange(4)
  9. fig = plt.figure()
  10. #添加子图区域
  11. ax = fig.add_axes([0,0,1,1])
  12. #绘制柱状图
  13. ax.bar(X + 0.00, data[0], color = 'b', width = 0.25)
  14. ax.bar(X + 0.25, data[1], color = 'g', width = 0.25)
  15. ax.bar(X + 0.50, data[2], color = 'r', width = 0.25)

上述代码执行后,将显示四个柱状图,将每个柱状图又均分为三个小柱状图,每个柱状图占据 0.25 个单位。

图2:matplotlib绘图

柱状图除了上述使用方法外,还有另外一种堆叠柱状图。所谓堆叠柱状图就是将不同数组别的柱状图堆叠在一起,堆叠后的柱状图高度显示了两者相加的结果值。

bar() 函数提供了一个可选参数 bottom ,该参数可以指定柱状图开始堆叠的起始值,一般从底部柱状图的最大值开始,依次类推。

下面是一个不同国家参加奥林匹克运动会所得奖牌(金银铜)的柱状堆叠图示例,如下所示:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. countries = ['USA', 'India', 'China', 'Russia', 'Germany']
  5. bronzes = np.array([38, 17, 26, 19, 15])
  6. silvers = np.array([37, 23, 18, 18, 10])
  7. golds = np.array([46, 27, 26, 19, 17])
  8. # 此处的 _ 下划线表示将循环取到的值放弃,只得到[0,1,2,3,4]
  9. ind = [x for x, _ in enumerate(countries)]
  10. #绘制堆叠图
  11. plt.bar(ind, golds, width=0.5, label='golds', color='gold', bottom=silvers+bronzes)
  12. plt.bar(ind, silvers, width=0.5, label='silvers', color='silver', bottom=bronzes)
  13. plt.bar(ind, bronzes, width=0.5, label='bronzes', color='#CD853F')
  14. #设置坐标轴
  15. plt.xticks(ind, countries)
  16. plt.ylabel("Medals")
  17. plt.xlabel("Countries")
  18. plt.legend(loc="upper right")
  19. plt.title("2019 Olympics Top Scorers")
  20. plt.show()

在上述代码中,第一次调用 plt.bar() 绘制了黄色柱状图, 第二次调用 plot.bar() 时绘制了灰色柱状图,最后一次调用 plt.bar() 则绘制最底部的柱状图。两个柱状图相接触的位置就是顶部与底部的位置,这样就构成了柱状堆叠图。

图3:柱状堆叠图


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



118 次浏览
3次