Python使用Matplotlib绘制柱状图与堆叠柱状图详解

Finn
Finn
发布时间:2026-10-15| 5人浏览过
原创

本文介绍如何使用Python的Matplotlib库绘制多种柱状图。通过bar()方法的bottom参数实现数据系列的垂直堆叠,利用barh()及left参数绘制水平方向的堆叠柱状图。文中包含基础柱状图、数据系列求和柱状图以及水平柱状图的完整代码示例与参数说明,帮助开发者快速掌握可视化技巧。

本文提供了Python绘制柱状图的具体代码实现,供读者参考学习。

基础数据系列柱状图绘制

首先展示如何绘制基础的数据系列柱状图。

import numpy as np
import matplotlib.pyplot as plt
import os #导入os库

x=np.linspace(0, 10, 30)#产生0-10之间30个元素的等差数列
noise=np.random.randn(30)#产生30个标准正态分布的元素
y1=x**2+2*noise #//产生叠加噪声的数据系列1
y2=x**1+2*noise #产生叠加噪声的数据系列2
y3=x**1.5+2*noise #产生叠加噪声的数据系列3\n"
plt.rcParams['font.sans-serif'] = 'SimHei'#设置字体为SimHei显示中文\n",
plt.rc('font', size=14)#设置图中字号大小\n",
plt.figure(figsize=(6,4))#设置画布\n",
plt.bar(x,y1,width = 0.2)#绘制柱状图\n",
plt.title('柱状图')#添加标题\n",
plt.xlabel('x')#添加横轴标签\n",
plt.ylabel('y1')#添加y轴名称\n",
path='D:\\my_python\\ch3\\output\\'
if not os.path.exists(path):
  os.makedirs(path)
plt.savefig(path+'scatter.jpg')#保存图片
plt.savefig(path+'plot.jpg')#保存图片\n",
plt.show()

数据系列求和柱状图绘制

接着演示如何绘制数据系列求和后的柱状图,以展示不同数据系列的总和对比。

import numpy as np
import matplotlib.pyplot as plt
import os #导入os库

x=np.linspace(0, 10, 30)#产生0-10之间30个元素的等差数列
noise=np.random.randn(30)#产生30个标准正态分布的元素
y1=x**2+2*noise #//产生叠加噪声的数据系列1
y2=x**1+2*noise #产生叠加噪声的数据系列2
y3=x**1.5+2*noise #产生叠加噪声的数据系列3\n"
plt.rcParams['font.sans-serif'] = 'SimHei'#设置字体为SimHei显示中文\n",
plt.rc('font', size=14)#设置图中字号大小\n",

plt.figure(figsize=(6,4))#设置画布\n",
plt.bar([0,1,2],[np.sum(y1),np.sum(y2),np.sum(y3)],width = 0.5)#绘制柱状图\n",
plt.title('柱状图')#添加标题\n",
labels=['y1的和','y2的和','y3的和']
plt.xlabel('数据系列y')#添加横轴标签\n",
plt.ylabel('数据系列y的和')#添加纵轴标签\n",
plt.xticks(range(3),labels)#横轴刻度与标签对准\n",


path='D:\\my_python\\ch3\\output\\'
if not os.path.exists(path):
  os.makedirs(path)
plt.savefig(path+'scatter.jpg')#保存图片
plt.savefig(path+'plot.jpg')#保存图片\n",
plt.show()

plt.figure(figsize=(6,4))#设置画布\n",
plt.bar(x,y1,width = 0.2)#绘制柱状图\n",
plt.bar(x,y2,width = 0.2,bottom=y1)#绘制柱状图  这里将堆叠到y1上方。
plt.title('堆叠柱状图')#添加标题\n",
plt.xlabel('x')#添加横轴标签\n",
plt.ylabel('y')#添加纵轴标签\n",
plt.legend(['y1','y2'])

plt.figure(figsize=(6,4))#设置画布\n",
plt.bar(x,y1,width = 0.2)#绘制柱状图\n",
plt.bar(x,y2,width = 0.2,bottom=y1)#绘制柱状图\n",
plt.bar(x,y3,width = 0.2,bottom=y1+y2,color='red')#绘制柱状图\n",
plt.title('堆叠柱状图')#添加标题\n",
plt.xlabel('x')#添加横轴标签\n",
plt.ylabel('y')#添加纵轴标签\n",
plt.legend(['y1','y2','y3'])

垂直堆叠柱状图实现

在中,bar()方法的bottom参数用于指定柱状图的底部基准。通过将某一数据系列指定为另一个数据系列的bottom值,可以将两个或多个数据系列的柱状图进行垂直堆叠处理。

水平柱状图绘制

随后介绍水平方向的基础柱状图绘制方法。

plt.figure(figsize=(6,4))#设置画布\n",
plt.barh(x, width=y1, height=0.2)
plt.title('水平柱状图')#添加标题\n",
plt.xlabel('y')#添加纵轴标签\n",
plt.ylabel('x')#添加横轴标签"

水平堆叠柱状图实现

进一步展示水平方向的堆叠柱状图绘制方式。

plt.figure(figsize=(6,4))#设置画布\n",
plt.barh(x, width=y1, height=0.2)
plt.barh(x, width=y2, height=0.2,left=y1)
plt.barh(x, width=y3, height=0.2,left=y1+y2,color='red')
plt.title('水平柱状图')#添加标题\n",
plt.xlabel('y')#添加纵轴标签\n",
plt.ylabel('x')#添加横轴标签\n",

与bar方法类似,中的barh方法使用left参数来设置数据柱左侧的起始位置。将一个数据系列设置为另一个数据系列的left参数,即可实现两个或多个数据系列在水平方向上的堆叠效果。

以上即为本文介绍的全部内容,希望这些示例能对读者的学习有所帮助,同时也欢迎大家继续支持本站获取更多技术资源。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。