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()

image-20240204235223077

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库中绘制不同种类炫酷柱状图的基本技术。通过灵活运用这些技术,你可以根据实际需求创建更加丰富多彩的柱状图表。

image-20240204235253825

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()

image-20240204235319700

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()

image-20240204235338404

总结

在本文中,我们深入探讨了使用Matplotlib库绘制各种炫酷柱状图的技术。从基本的簇状柱状图、堆积柱状图、横向柱状图、百分比柱状图,到更高级的3D柱状图、水平堆积柱状图、多面板柱状图等,提供了多个实用的代码示例。

通过这些示例,读者可以学到如何使用Matplotlib库的不同函数和参数来绘制不同类型的柱状图。我们还介绍了一些自定义技巧,包括添加误差线、调整颜色和样式,以及绘制多面板柱状图等。

总体而言,Matplotlib是一个功能强大的数据可视化工具,通过掌握其中的技术,用户可以根据实际需求创造出更具表现力和可读性的图表。希望本文的代码示例能够帮助读者更好地理解和应用Matplotlib库,提高数据可视化的效果。如果读者有其他问题,建议查阅Matplotlib官方文档或向相关社区寻求帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#string方法对比

字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下: using System; namespace ConsoleApp23{ class Progra…

aidl复杂流程封装

1 aidl相关困扰点 1 制作步骤复杂,先定义然后编译,然后复制,两边都要一一对应 2 增加回调,自定义对象流程更加麻烦,还要处理对象数据流是 in 还是out。 3 一方异常怎么办,虽然服务端可以用 RemoteCallbackL…

Retrofit源码分析及理解

参考文档: 12W字;2022最新Android11位大厂面试专题(一) - 掘金 Retrofit 版本号:2.9.0 Retrofit简单来说,就是对OkHttp上层进行了封装,已达到用户方便使用管理网络请求的目的。 Retrofit内部有…

力扣热门100题刷题笔记 - 10. 正则表达式匹配

力扣热门100题 - 10. 正则表达式匹配 题目链接:10. 正则表达式匹配 题目描述: 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符 * 匹配零个或多个前面的那一个元素 所谓匹配&#xff…

asqlcell,一个超强的 Python 库!

前言 大家好,今天为大家分享一个超强的 Python 库 - asqlcell。 Github地址:https://github.com/datarho/asqlcell Python asqlcell 是一个用于执行异步数据库操作的开源库,它允许开发者通过异步的方式与数据库进行交互,提高了数…

如何使用VS Code编写小游戏并实现公网游玩本地游戏【内网穿透】

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程,我们将通过VS Code实现远程开发MENJA小游戏,并通过cpolar内网穿透发布到公网,分…

七月论文审稿GPT第2.5版:微调GPT3.5 turbo 16K和llama2 13B以扩大对GPT4的优势

前言 自去年7月份我带队成立大模型项目团队以来,我司至今已有5个项目组,其中 第一个项目组的AIGC模特生成系统已经上线在七月官网第二项目组的论文审稿GPT则将在今年3 4月份对外上线发布第三项目组的RAG知识库问答第1版则在春节之前已就绪至于第四、第…

ai平滑工具的使用方法

ai中想要使用平滑工具来处理线条,该怎么是哦用哪个恩?下面我们就来看看详细的教程。 1、我们通过一个例子演示平滑工具的使用,先新建文件,在左侧工具箱中找到平滑工具。 文章源自四五设计网-https://www.45te.com/39726.html 2、…

CSS:三列布局

三列布局是指左右两列定宽&#xff0c;中间自适应。最终效果如下&#xff1a; HTML&#xff1a; <div class"container"><div class"left"></div><div class"center"></div><div class"right">…

001集:open语句打开文件及文件类型(二进制、文本文件)详解——vba

open用法可以用来打开文件、文件夹或网页&#xff0c;也可以用来运行某一应用程序、文件或网页。一般来说&#xff0c;只要在开始菜单中可以找到某个应用程序&#xff0c;我们就可以使用open命令打开该应用程序;另外&#xff0c;在打开某个文件或网页时&#xff0c;也可以使用o…

设计模式学习笔记05(小滴课堂)

讲解Adapeter设计模式和应用场景 接口的适配器案例实战 代码&#xff1a; 定义一个接口&#xff1a; 编写适配器&#xff1a; 写我们的商品类&#xff1a; 会员类&#xff1a; 这样我们不同的需求可以根据需要去实现不同的接口方法&#xff0c;而不用实现全部接口方法。 适配…

Qt案例 在对QGraphicsView视图修改和撤销修改图元操作时,使用命令模式实现。

当项目中有QGraphicsView视图直接修改图元的功能时&#xff0c;常会有CtriZ和CtrlY这种执行与撤销图元修改的功能&#xff0c;以便于在修改图元后能够进行一个还原/执行操作&#xff0c;此时就适合使用命令模式设计来实现这个功能。 以下示例在WINDOWS系统&#xff0c;Qt Creat…

echarts step line

https://ppchart.com/#/ <template><div class"c-box" ref"jsEchart"></div> </template><script> import * as $echarts from echarts // 事件处理函数 export default {props: {// 需要传递的数据data: {type: Array,defa…

字符串匹配算法(z函数模版)来自灵神。

一个字符串s求出s的z[i]&#xff0c;z[i]表示以s[i:n]这一段和s[0:n]的从前往后的连续相等字母个数。 比如 abacaba,z[2] (acaba与abacaba比较) 1。

SpringBoot整合Flowable最新教程(一)Flowable介绍

一、Flowable 入门介绍 代码实现文章&#xff1a;SpringBoot整合Flowable最新教程&#xff08;二&#xff09; 官网地址&#xff1a;https://www.flowable.org/   Flowable6.3中文教程&#xff1a;中文教程地址   可以在官网下载对应的jar包在本地部署运行&#xff0c;官方…

【IC设计】Windows下基于IDEA的Chisel环境安装教程(图文并茂)

Chisel环境安装教程 第一步 安装jdk&#xff0c;配置环境变量第二步 安装sbt&#xff0c;不用配置环境变量第三步 安装idea社区版第四步 离线安装scala的idea插件第五步 配置sbt换源1.切换目录2.创建repositories文件3.配置sbtconfig.txt文件 第六步 使用chisel-tutorial工程运…

CISCRISC? CPU架构有哪些? x86 ARM?

编者按&#xff1a;鉴于笔者水平有限&#xff0c;文中难免有不当之处&#xff0c;还请各位读者海涵。 是为序 我猜&#xff0c;常年混迹CSDN的同学应该不会没听说过CPU吧&#xff1f; 但你真的了解CPU吗&#xff1f;那笔者问你CPU有哪些架构呢&#xff1f; 如果你对你的答案…

FCIS 2023:洞悉网络安全新态势,引领创新防护未来

随着网络技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;成为全球共同关注的焦点。在这样的背景下&#xff0c;FCIS 2023网络安全创新大会应运而生&#xff0c;旨在汇聚业界精英&#xff0c;共同探讨网络安全领域的最新动态、创新技术和解决方案。 本文将从大会的…

JVM 性能调优 - Java 中的四种引用(4)

为什么会有四种引用 我们先回顾下在 Java 虚拟机内存体系(1) 中提到了的垃圾回收算法 1、引用计数法 原理:给对象添加一个引用计数器,每当有一个地方引用它,计数器的值就加一。每当有一个引用失效,计数器的值就减一。当计数器值为零时,这个对象被认为没有其他对象引用,…

JDK和Spring的SPI机制原理分析

目录 一、JDK 二、Spring框架介绍 三、SPI机制原理 一、JDK JDK是Java Development Kit的缩写&#xff0c;是Java开发工具包的意思。它是用于开发Java应用程序和运行Java程序的软件包。JDK包含了Java编译器&#xff08;javac&#xff09;和Java虚拟机&#xff08;JVM&#…