求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
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设置刻度和标签
 

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

柱状图是一种用矩形柱来表示数据分类的图表,柱状图可以垂直绘制,也可以水平绘制,它的高度与其所表示的数值成正比关系。柱状图显示了不同类别之间的比较关系,图表的水平轴 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元





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



5 次浏览