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.hqwc.cn/news/454681.html

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

相关文章

2024.2.5日总结(小程序开发2)

小程序的宿主环境 宿主环境 宿主环境指的是程序运行所必须的依赖环境。 Android系统和iOS系统是两个不同的宿主环境。安卓版的微信App不能再iOS环境下运行。Android是安卓软件的宿主环境,脱离了宿主环境的软件是没有意义的。 小程序的宿主环境 手机微信是小程序…

vue全家桶之状态管理Pinia

一、Pinia和Vuex的对比 1.什么是Pinia呢? Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近pia(西班牙语中的菠萝)的词; Pinia开始于大概2019年,最初是作为一个实验为Vue重新…

【ArcGIS微课1000例】0102:面状要素空洞填充

文章目录 一、实验描述二、实验数据三、实验步骤1. 手动补全空洞2. 批量补全空洞四、注意事项一、实验描述 在对地理数据进行编辑时,时常会遇到面数据中存在个别或大量的空洞,考虑实际情况中空洞的数量多少、分布情况,填充空洞区域可以采用逐个填充的方式,也可以采用快速大…

【Django开发】美多商城项目第3篇:用户注册和图片验证码开发(附代码,文档已分享)

本系列文章md笔记(已分享)主要讨论django商城项目开发相关知识。本项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django Jinja2模板引擎 Vue.js实现…

构建高效直播美颜系统:美颜SDK集成与性能优化指南

如今,美颜技术的广泛应用成为各类直播平台的标配之一。今天,小编将与大家进一步讨论如何构建高效的直播美颜系统,重点关注美颜SDK的集成和性能优化方面。 一、美颜SDK的选择与集成 选择合适的美颜SDK是构建高效直播美颜系统的第一步。不同的…

一台机器上如何部署多个web项目

1、综述 随着计算机硬件水平的不断提高,往往不是一台机器上只部署一个web项目了,而是尽可能多部署几个项目,以用来节省资源,现在我们看看如何一台机器部署多个项目,我们先结合上一篇文章中提到的tomcat架构&#xff0…

美创科技与河南金融信创生态实验室签署战略合作协议

2024年1月31日,由普惠通科技与河南省科学院物理所、北京交通大学、中国金融电子化集团重庆金融认证中心联合发起成立中部地区第一家金融信创生态实验室运营公司(即河南豫科普惠通信创科技有限公司)与杭州美创科技股份有限公司战略合作签约仪式…

windows10忘记密码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

下载已编译的 OpenCV 包在 Visual Studio 下实现快速配置

自己编译 OpenCV 挺麻烦的,配置需要耗费很长时间,编译也需要很长时间,而且无法保证能全部编译通过。利用 OpenCV 官网提供的已编译的 OpenCV 库可以节省很多时间。下面介绍安装配置方法。 1. OpenCV 官网 地址是:https://opencv…

Gas Hero Coupon NFT 概览与数据分析

作者:stellafootprint.network 编译:mingfootprint.network 数据源:Gas Hero Coupon NFT Collection Dashboard Gas Hero “盖世英雄” 是一个交互式的 Web3 策略游戏,强调社交互动,并与 FSL 生态系统集成&#xff0…

深度学习之循环神经网络进阶

这一讲我们学习如何实现一个循环神经网络的分类器: 我们要解决的问题是名字分类,我们根据名字找到其对应的国家。 上一讲我们介绍了循环神经网络。 我们在处理自然语言的时候我们通常是以上这种方式,我们在处理单词的时候,通常…

Vue3快速上手(一)使用vite创建项目

一、准备 在此之前,你的电脑,需要安装node.js,我这边v18.19.0 wangdymb 2024code % node -v v18.19.0二、创建 执行npm create vuelatest命令即可使用vite创建vue3项目 有的同学可能卡主不动,可能是npm的registry设置的问题 先看下&#x…