Matplotlib绘制炫酷柱状图的艺术与技巧【第60篇—python:Matplotlib绘制柱状图】
文章目录
- Matplotlib绘制炫酷柱状图的艺术与技巧
- 1. 簇状柱状图
- 2. 堆积柱状图
- 3. 横向柱状图
- 4. 百分比柱状图
- 5. 3D柱状图
- 6. 堆积横向柱状图
- 7. 多系列百分比柱状图
- 8. 3D堆积柱状图
- 9. 带有误差线的柱状图
- 10. 分组百分比柱状图
- 11. 水平堆积柱状图
- 12. 多面板柱状图
- 13. 自定义颜色和样式
- 总结
Matplotlib绘制炫酷柱状图的艺术与技巧
当今数据可视化领域,Matplotlib是Python中最为流行的绘图库之一。它提供了丰富的功能和灵活的选项,使得用户能够创建各种类型的图表。本文将介绍Matplotlib库中绘制不同种类炫酷柱状图的技术,包括簇状柱状图、堆积柱状图、横向柱状图、百分比柱状图以及3D柱状图。
1. 簇状柱状图
簇状柱状图是将多个柱状图并列在同一组,方便比较不同类别之间的数据。下面是一个简单的代码示例:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values1 = [5, 7, 9]
values2 = [6, 8, 10]bar_width = 0.35
index = np.arange(len(categories))plt.bar(index, values1, bar_width, label='Group 1')
plt.bar(index + bar_width, values2, bar_width, label='Group 2')plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Clustered Bar Chart')
plt.xticks(index + bar_width / 2, categories)
plt.legend()
plt.show()

2. 堆积柱状图
堆积柱状图用于展示总体和各组成部分之间的关系。以下是一个堆积柱状图的代码示例:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values1 = [5, 7, 9]
values2 = [3, 6, 8]plt.bar(categories, values1, label='Group 1')
plt.bar(categories, values2, bottom=values1, label='Group 2')plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Stacked Bar Chart')
plt.legend()
plt.show()
3. 横向柱状图
横向柱状图在一些情境下更适合,可以通过barh函数实现:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values = [5, 7, 9]plt.barh(categories, values)plt.xlabel('Values')
plt.ylabel('Categories')
plt.title('Horizontal Bar Chart')
plt.show()
4. 百分比柱状图
百分比柱状图可以通过将每个值除以总和来实现。以下是一个简单的例子:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values = [20, 30, 50]total = sum(values)
percentages = [(value / total) * 100 for value in values]plt.bar(categories, percentages)plt.xlabel('Categories')
plt.ylabel('Percentage')
plt.title('Percentage Bar Chart')
plt.show()
5. 3D柱状图
Matplotlib还支持绘制3D柱状图,可以通过bar3d函数实现:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values = [5, 7, 9]fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')xpos = np.arange(len(categories))
ypos = [1] * len(categories)ax.bar3d(xpos, ypos, np.zeros(len(categories)), 0.8, 0.8, values)ax.set_xlabel('Categories')
ax.set_ylabel('Y')
ax.set_zlabel('Values')
ax.set_title('3D Bar Chart')
plt.show()
以上是一些Matplotlib库中绘制不同种类炫酷柱状图的基本技术。通过灵活运用这些技术,你可以根据实际需求创建更加丰富多彩的柱状图表。

6. 堆积横向柱状图
堆积横向柱状图同样可以通过barh函数实现,不过需要调整参数来实现堆积效果:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values1 = [5, 7, 9]
values2 = [3, 6, 8]plt.barh(categories, values1, label='Group 1')
plt.barh(categories, values2, left=values1, label='Group 2')plt.xlabel('Values')
plt.ylabel('Categories')
plt.title('Stacked Horizontal Bar Chart')
plt.legend()
plt.show()
7. 多系列百分比柱状图
当需要比较多个系列的百分比时,可以将每个系列的百分比进行堆积展示:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values1 = [20, 30, 50]
values2 = [10, 40, 50]total1 = sum(values1)
total2 = sum(values2)
percentages1 = [(value / total1) * 100 for value in values1]
percentages2 = [(value / total2) * 100 for value in values2]plt.bar(categories, percentages1, label='Group 1')
plt.bar(categories, percentages2, bottom=percentages1, label='Group 2')plt.xlabel('Categories')
plt.ylabel('Percentage')
plt.title('Stacked Percentage Bar Chart')
plt.legend()
plt.show()
8. 3D堆积柱状图
Matplotlib的3D绘图工具同样支持堆积效果,可以通过调整参数来实现:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values1 = [5, 7, 9]
values2 = [3, 6, 8]fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')xpos = np.arange(len(categories))
ypos = [1] * len(categories)ax.bar3d(xpos, ypos, np.zeros(len(categories)), 0.8, 0.8, values1, label='Group 1')
ax.bar3d(xpos, ypos, np.zeros(len(categories)), 0.8, 0.8, values2, bottom=values1, label='Group 2')ax.set_xlabel('Categories')
ax.set_ylabel('Y')
ax.set_zlabel('Values')
ax.set_title('3D Stacked Bar Chart')
ax.legend()
plt.show()
以上代码示例展示了如何使用Matplotlib库绘制不同种类炫酷柱状图。通过这些例子,你可以灵活运用Matplotlib的强大功能,根据实际需求绘制出多样化的柱状图表。希望这些例子能够帮助你更好地理解和使用Matplotlib库。
9. 带有误差线的柱状图
有时候,为了更全面地呈现数据,我们需要在柱状图上添加误差线。以下是一个带有误差线的简单示例:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values = [5, 7, 9]
errors = [0.5, 0.8, 0.2]plt.bar(categories, values, yerr=errors, capsize=5, label='Values with Error')plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Bar Chart with Error Bars')
plt.legend()
plt.show()

10. 分组百分比柱状图
有时候需要比较不同组的百分比,可以通过调整宽度和位置实现分组效果:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values_group1 = [20, 30, 50]
values_group2 = [15, 25, 60]total_group1 = sum(values_group1)
total_group2 = sum(values_group2)
percentages_group1 = [(value / total_group1) * 100 for value in values_group1]
percentages_group2 = [(value / total_group2) * 100 for value in values_group2]bar_width = 0.35
index = np.arange(len(categories))plt.bar(index, percentages_group1, bar_width, label='Group 1')
plt.bar(index + bar_width, percentages_group2, bar_width, label='Group 2')plt.xlabel('Categories')
plt.ylabel('Percentage')
plt.title('Grouped Percentage Bar Chart')
plt.xticks(index + bar_width / 2, categories)
plt.legend()
plt.show()
11. 水平堆积柱状图
水平堆积柱状图可以通过调整参数实现。以下是一个简单的水平堆积柱状图的代码示例:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values1 = [5, 7, 9]
values2 = [3, 6, 8]plt.barh(categories, values1, label='Group 1')
plt.barh(categories, values2, left=values1, label='Group 2')plt.xlabel('Values')
plt.ylabel('Categories')
plt.title('Horizontal Stacked Bar Chart')
plt.legend()
plt.show()
12. 多面板柱状图
如果你希望在同一图中展示多个柱状图,并对它们进行比较,可以使用多面板柱状图。以下是一个简单的例子:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values1 = [5, 7, 9]
values2 = [3, 6, 8]fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))ax1.bar(categories, values1, label='Group 1')
ax1.bar(categories, values2, bottom=values1, label='Group 2')
ax1.set_title('Grouped Bar Chart')ax2.barh(categories, values1, label='Group 1')
ax2.barh(categories, values2, left=values1, label='Group 2')
ax2.set_title('Grouped Horizontal Bar Chart')plt.legend()
plt.show()
13. 自定义颜色和样式
你可以通过传递颜色参数来自定义柱状图的颜色。此外,你还可以设置柱体的样式,例如边框宽度、边框颜色等。以下是一个简单的例子:
import matplotlib.pyplot as plt
import numpy as npcategories = ['Category A', 'Category B', 'Category C']
values = [5, 7, 9]plt.bar(categories, values, color=['blue', 'orange', 'green'], edgecolor='black', linewidth=2)plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Customized Bar Chart')
plt.show()

总结
在本文中,我们深入探讨了使用Matplotlib库绘制各种炫酷柱状图的技术。从基本的簇状柱状图、堆积柱状图、横向柱状图、百分比柱状图,到更高级的3D柱状图、水平堆积柱状图、多面板柱状图等,提供了多个实用的代码示例。
通过这些示例,读者可以学到如何使用Matplotlib库的不同函数和参数来绘制不同类型的柱状图。我们还介绍了一些自定义技巧,包括添加误差线、调整颜色和样式,以及绘制多面板柱状图等。
总体而言,Matplotlib是一个功能强大的数据可视化工具,通过掌握其中的技术,用户可以根据实际需求创造出更具表现力和可读性的图表。希望本文的代码示例能够帮助读者更好地理解和应用Matplotlib库,提高数据可视化的效果。如果读者有其他问题,建议查阅Matplotlib官方文档或向相关社区寻求帮助。
相关文章:
Matplotlib绘制炫酷柱状图的艺术与技巧【第60篇—python:Matplotlib绘制柱状图】
文章目录 Matplotlib绘制炫酷柱状图的艺术与技巧1. 簇状柱状图2. 堆积柱状图3. 横向柱状图4. 百分比柱状图5. 3D柱状图6. 堆积横向柱状图7. 多系列百分比柱状图8. 3D堆积柱状图9. 带有误差线的柱状图10. 分组百分比柱状图11. 水平堆积柱状图12. 多面板柱状图13. 自定义颜色和样…...
window 挂载linux 网盘
背景:因为很多情况下,作为开发人员,我们都希望用Linux的编译环境,但是可以用windows下各种IDE来写code; linux 服务器安装NFS服务 说明:NFS 服务就是让不同的计算机可以在不同的操作系统之间共享文件,采用的就是服务端/客户端的架构,在NFS服务器上将目录设置为输出目录(…...
windows10忘记密码的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
进程和线程的区别详解
🎥 个人主页:Dikz12📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 进程 进程在系统中是如何管理的 进一步认识PCB 线程 能否一直增加线程数目来提高效率 进程和线程…...
(基于xml配置Aop)学习Spring的第十五天
一 . Spring Aop编程简介 再详细点 , 如下 二 . 基于xml配置Aop 解决proxy相关问题 解决问题开始用xml配置AOP 导入pom坐标 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</vers…...
Centos7环境安装PHP8
一、安装必要的模块 yum install -y bzip2-devel libcurl-devel libxml2-devel sqlite-devel oniguruma oniguruma-devel libxml2 libxml2-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel zstd libzstd-devel curl libcurl-devel libpng libpng-devel …...
No matching client found for package name ‘com.unity3d.player‘
2024年2月5日更新 必须使用Unity方式接入Unity项目!一句话解决所有问题。(真的别玩Android方式) 大致这问题出现原因是我在Unity采用了Android方式接入Firebase,而Android接入实际上和Unity接入方式有配置上的不一样,我…...
JavaWeb之HTML-CSS --黑马笔记
什么是HTML ? 标记语言:由标签构成的语言。 注意:HTML标签都是预定义好的,HTML代码直接在浏览器中运行,HTML标签由浏览器解析。 什么是CSS ? 开发工具 VS Code --安装文档和安装包都在网盘中 链接:https://p…...
logback日志配置
springboot默认使用logback 无需额外添加pom依赖 1.指定日志文件路径 当前项目路径 testlog文件夹下 linux会在项目jar包同级目录 <property name"log.path" value"./testlog" /> 如果是下面这样配置的话 window会保存在当前项目所在盘的home文件夹…...
SpringBoot集成Flowable工作流
文章目录 一、了解Flowable1. 什么是Flowable2. Flowable基本流程3. Flowable主要几张表介绍 二、SpringBoot集成Flowable1. 在idea中安装Flowable插件2. SpringBoot集成Flowable3. SpringBoot集成Flowable前端页面 三、创建流程模版(以请假为例) 提示:以下是本篇文…...
try-with-resources 语法详解
目录 一、介绍 二、用法对比 三、优势 四、原理分析 一、介绍 在Java 7中,引入了一项重要的语法糖——try-with-resources,这项特性的目的是为了更有效地处理资源的管理。资源指的是需要在代码执行完毕后手动关闭的对象,比如文件流、网络…...
【Java程序设计】【C00207】基于(JavaWeb+SSM)的宠物领养管理系统(论文+PPT)
基于(JavaWebSSM)的宠物领养管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的宠物领养系统 本系统分为前台系统、管理员、收养者和寄养者4个功能模块。 前台系统:游客打开系统…...
2024-2-4-复习作业
源代码: #include <stdio.h> #include <stdlib.h> typedef int datatype; typedef struct Node {datatype data;struct Node *next;struct Node *prev; }*DoubleLinkList;DoubleLinkList create() {DoubleLinkList s(DoubleLinkList)malloc(sizeof(st…...
【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
前言 大家好吖,欢迎来到 YY 滴Linux 系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…...
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
盘点本年度探索对外服务的百万请求量的API网关设计实现 背景介绍高性能API网关API网关架构优化多级缓存架构设计多级缓存富客户端漏斗模型数据读取架构 异步刷新过期缓存网关异步化调用模型高性能批量API调用(减少对于网关的交互和通信)并行调用和请求合…...
Python算法题集_环形链表
Python算法题集_环形链表 题234:环形链表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【集合检索】2) 改进版一【字典检测】3) 改进版二【双指针】 4. 最优算法 本文为Python算法题集之一的代码示例 题234:环形链表 …...
【51单片机】开发板&开发软件(Keil5&STC-ISP)简介&下载安装破译传送门(1)
前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…...
#vu3# element plus表格的序号字段
在表格中添加序号字段,可以使用以下几种方式来实现 1. 利用索引 在<el-table>组件的<el-table-column>中使用插槽来显示序号。示例: <el-table :data"tableData"><el-table-column label"序号" type"i…...
华为配置OSPF与BFD联动示例
配置OSPF与BFD联动示例 组网图形 图1 配置OSPF与BFD联动组网图 OSPF与BFD联动简介配置注意事项组网需求配置思路操作步骤配置文件 OSPF与BFD联动简介 双向转发检测BFD(Bidirectional Forwarding Detection)是一种用于检测转发引擎之间通信故障的检测…...
Git 常用命令详解及如何在IDEA中操作
文章目录 前言发现宝藏一、初识Git1.Git概述2. Git的功能3. Git运行图示 二、Git下载安装三、Git 代码托管服务1.常用的 Git 代码托管服务2.使用码云代码托管服务 四、Git 常用命令1.Git 全局设置2.获取Git 仓库3.工作区、暂存区、版本库 概念4.Git 工作区中文件的两种状态5.本…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
