【plt.bar绘制条形图or柱状图】:从入门到精通,只需一篇文章!【Matplotlib可视化】

【📊plt.bar绘制条形图】:从入门到精通,只需一篇文章!【Matplotlib】

在这里插入图片描述

利用Matplotlib进行数据可视化示例


在这里插入图片描述

🌵文章目录🌵

  • 🔍 一、初识plt.bar:条形图的基本概念
  • 💡 二、plt.bar进阶:条形图的定制与优化
    • 📊 1. 定制与优化条形图
    • 💫 2. 交互式条形图
  • 🔥 三、总结与展望:plt.bar的无限可能
  • 🌳 四、 结尾

  大家好!👋 欢迎来到我的博客,今天我们将一起探索如何使用Matplotlib库中的plt.bar()函数绘制条形图。条形图是一种常见的数据可视化工具,用于展示不同类别的数据之间的比较。通过本文,你将从入门到精通,掌握使用plt.bar()绘制条形图的技巧!🚀

🔍 一、初识plt.bar:条形图的基本概念

  首先,让我们来了解一下条形图的基本概念。条形图是一种用矩形条表示数据的图表,矩形条的长度或高度表示数据的数值。在Matplotlib中,我们可以使用plt.bar()函数来绘制条形图。这个函数的基本语法非常简单,只需要指定x轴的位置和y轴的数值即可。

  下面是一个简单的示例代码,展示如何使用plt.bar()绘制基本的条形图:

import matplotlib.pyplot as plt

# 数据准备
categories = ['Apple', 'Banana', 'Orange']
values = [10, 15, 7]

# 创建条形图
plt.bar(categories, values)

# 设置图表标题和坐标轴标签
plt.title('Fruit Consumption')
plt.xlabel('Fruits')
plt.ylabel('Quantity')

# 显示图表
plt.show()

运行以上代码,你将看到一个简单的条形图,展示了三种水果的消费量:

在这里插入图片描述

Fig.1 使用plt.bar绘制基本的条形图

💡 二、plt.bar进阶:条形图的定制与优化

📊 1. 定制与优化条形图

  除了基本的条形图绘制外,我们还可以使用一些进阶技巧来定制和优化条形图的外观和效果。下面是一些常用的定制选项:

  • 调整条形的宽度和间距
  • 添加数据标签和注释
  • 调整坐标轴的范围和刻度
  • 设置图表的网格线和样式

下面是一个示例代码,展示如何使用这些进阶技巧定制条形图:

import matplotlib.pyplot as plt

# 数据准备
categories = ['Apple', 'Banana', 'Orange', 'Watermelon', 'Grape']
values = [23, 15, 36, 28, 33]
colors = ['red', 'yellow', 'orange', 'green', 'purple']

# 设置条形的宽度和间距
bar_width = 0.4
index = range(len(categories))

# 创建条形图,设置颜色和标签
for i, category in enumerate(categories):
    plt.bar(i, values[i], bar_width, color=colors[i], label=category, edgecolor='black')

# 添加数据标签
for i, v in enumerate(values):
    plt.text(i, v + 0.5, str(v), ha='center', va='bottom')

# 设置坐标轴的刻度和标签
plt.xlabel('Categories')
plt.ylabel('Sales Quantity')
plt.title('Fruit Sales by Category')
plt.xticks([i for i in index], categories)  # 将刻度标签设置在条形的中心

# 添加图例,传入类别名称列表
plt.legend(categories)

# 设置网格线
plt.grid(axis='y', alpha=0.5)

# 设置坐标轴的范围
plt.xlim([-bar_width / 2, len(categories) - (1 - bar_width / 2)])
plt.ylim(0, max(values) + 10)  # 为y轴设置合理的范围,留出一些空间

# 显示图表
plt.show()

🎉 效果展示

在这里插入图片描述

Fig.2 使用plt.bar定制条形图

  这段代码使用Python的Matplotlib库绘制了一个条形图,展示了不同水果类别🍎🍌🍇🍉🍊的销售数量。通过为每个水果类别分配独特的颜色,并在条形上方添加数据标签,用户能够直观地看到各类水果的销售情况。

  通过这段代码,我们不仅能够看到每个水果类别的销售数量,还能感受到其视觉上的美感。这使得数据的展示更加直观和易于理解。

💫 2. 交互式条形图

除了静态的条形图,我们还可以使用Matplotlib创建交互式条形图,使图表更具吸引力和互动性。Matplotlib支持事件处理,我们可以通过添加回调函数来响应用户的交互操作。

下面是一个示例代码,展示如何创建一个简单的交互式条形图:

# 导入matplotlib.pyplot模块,通常用于绘图
import matplotlib.pyplot as plt
# 导入matplotlib模块,这是一个用于绘制2D图形的库
import matplotlib

# 设置matplotlib使用TkAgg作为其后端,TkAgg是一个基于Tkinter的GUI后端
matplotlib.use('TkAgg')

# 数据准备
# 定义一个列表categories,用于存储水果的名称
categories = ['Apple', 'Strawberry', 'Watermelon', 'Pineapple', 'Peach']
# 定义一个列表values,用于存储每种水果对应的值
values = [23, 46, 69, 56, 45]

# 创建条形图
# 创建一个新的图形窗口和一个坐标轴
fig, ax = plt.subplots()
# 在坐标轴上绘制条形图,其中categories是x轴的数据,values是y轴的数据
# 设置条形图的颜色为skyblue,边缘颜色为black
bars = ax.bar(categories, values, color='skyblue', edgecolor='black')


# 定义一个函数,用于处理鼠标点击事件
def onclick(event):
    # 遍历每一个条形
    for bar in bars:
        # 检查鼠标点击的位置是否在条形内部
        if bar.contains(event)[0]:
            # 如果是,则获取条形的位置和高度
            # 获取条形中心的x坐标
            x = bar.get_x() + bar.get_width() / 2
            # 获取条形的高度
            height = bar.get_height()
            # 打印出被点击的条形的类别和值
            print(f"Clicked on {categories[bars.index(bar)]} with a value of {height}")
            # 找到一个条形后,退出循环
            break

        # 将鼠标点击事件连接到处理函数onclick


# 当用户点击图形窗口时,会触发onclick函数
fig.canvas.mpl_connect('button_press_event', onclick)

# 设置图表的标题和坐标轴的标签
# 设置标题为'Bar Chart with Click Events'
ax.set_title('Bar Chart with Click Events')
# 设置x轴的标签为'Category'
ax.set_xlabel('Category')
# 设置y轴的标签为'Value'
ax.set_ylabel('Value')

# 显示图表
# 这将打开一个图形窗口,显示创建的条形图
plt.show()

以上代码的功能是创建一个带有交互性的条形图使用户能够通过点击来查看每个条形的详细信息。首先,导入了matplotlib.pyplotmatplotlib模块,它们是Python中用于绘制2D图形的强大库。📈 接着,设置了matplotlib使用TkAgg作为其后端,以便在Tkinter窗口中展示图形。然后,定义了categoriesvalues两个列表,分别存储水果名称和对应的值。这些值将作为条形图的y轴数据。使用plt.subplots()创建了一个新的图形窗口和一个坐标轴,并在坐标轴上绘制了条形图,设置了颜色为天空蓝,边缘为黑色。💙

为了增加交互性,定义了一个onclick函数,用于处理鼠标点击事件。当用户点击图形窗口时,该函数会遍历每个条形,检查点击位置是否在条形内部。如果是,则获取该条形的位置和高度,并打印出对应的水果类别和值。通过fig.canvas.mpl_connect将鼠标点击事件与onclick函数连接起来,实现了点击交互功能。🖱️

最后,设置了图表的标题、x轴和y轴的标签,并使用plt.show()显示图表。这将打开一个图形窗口,展示创建的条形图。用户可以通过点击条形来查看其对应的水果类别和值,从而增强了图表的可读性和互动性。🌈

🎉 效果展示

在这里插入图片描述

Fig.3 使用plt.bar定制交互式条形图

当依次点击上图的五个条形时,代码会在运行窗口输出对应的水果类别和值:

Clicked on Apple with a value of 23
Clicked on Strawberry with a value of 46
Clicked on Watermelon with a value of 69
Clicked on Pineapple with a value of 56
Clicked on Peach with a value of 45

🔥 三、总结与展望:plt.bar的无限可能


通过本文的介绍,你已经掌握了使用Matplotlib库中的plt.bar()函数绘制条形图的基本方法和技巧。从入门到精通,只需一篇文章!现在,你可以自信地应对各种条形图的绘制需求,并展示你的数据可视化能力。

然而,条形图只是数据可视化领域中的冰山一角。Matplotlib库还提供了许多其他类型的图表,如折线图、散点图、饼图等。通过学习和掌握这些图表的绘制方法,你可以更加全面地展示和分析数据。此外,你还可以探索其他数据可视化库,如Seaborn、Plotly等,它们提供了更多的功能和样式选择。

在未来的学习和实践中,不断尝试新的图表类型和可视化库,挑战自己的数据可视化能力。相信你会在数据可视化的道路上越走越远,创造出更多令人惊叹的可视化作品!🚀🚀🚀

希望本文对你有所帮助!如果你有任何问题或建议,请随时联系我。感谢你的阅读和支持!🙏🙏🙏

记得点赞👍、收藏🌟和分享🔄哦!让更多的人了解和学习数据可视化的魅力!🎉🎉🎉

🌳 四、 结尾

  亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。

  我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!

  您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6.s081 学习实验记录(六)copy on write fork

文章目录 实现COW一、问题二、注意三、实现COW四、实验结果 实现COW 一、问题 准备:切换到 cow 分支 目前 xv6 的 fork 系统调用创建的子进程会赋值父进程所有的用户态内存,如果父进程比较大,那么这个复制过程会很耗时,而且一般…

java根据前端所要格式返回树形3级层级数据

一、业务分析,根据前端需求返回如下数据格式 二、后端设计数据类型VO /*** author TTc* version 1.0* date 2024/2/15 16:47*/ Data AllArgsConstructor NoArgsConstructor public class Catalog2Vo {/*** 一级父分类的 id*/private String catalog1Id;/*** 三级子…

ForkJoin 的使用以及原理

原理 Fork-Join 是一种并行计算模式,它通常用于解决递归式或者分治式的问题。其原理基于将一个大的任务划分成若干个小任务,然后并行地执行这些小任务,最后将它们的结果合并起来得到最终的结果。 具体来说,Fork-Join 模式包含两个…

RK3399平台开发系列讲解(USB篇)U盘等存储类设备

🚀返回专栏总目录 文章目录 一、什么是U盘等存储类设备二、U盘设备传输数据结构三、U盘识别需要打开的宏沉淀、分享、成长,让自己和他人都能有所收获!😄 📢介绍U盘等存储类设备。 一、什么是U盘等存储类设备 USB Mass Storage Device Class(USB MSC/UMS) USB大容量存…

分享几个丝滑oled代码

最近一段业余时间在捣鼓esp32,发现对于一个搞diy的来说,它的生态,不管是开发环境、氛围还是可玩度都是独一挡的,国内外基于此的扩展真是太多了,找了几个通过按键/旋钮进行0.96寸OLED控制的案例,超级丝滑&am…

芯品荟|吉他屏驱应用介绍

PART ONE 市场简介 - Market Profile - 古典吉他与小提琴、钢琴并列为世界著名三大乐器。 目前,带屏成为吉他产品的新发展趋势。 核心应用 调音器、节拍器、录音器、效果、练习、循环乐段。 特色应用 4.3寸以下TFT屏 分辨率800*480以下 不带音弦按键替代&…

鸿蒙OS跨进程IPC与RPC通信

一、IPC与RPC通信概述 基本概念 IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动…

对称密钥的分配、公钥的分配

目录 密钥分配 1 对称密钥的分配 KDC 对会话密钥 KAB 的分配 对称密钥分配协议:Kerberos 2 公钥的分配 认证中心 CA (Certification Authority) 数字证书 (digital certificate) 已签名的 B 的数字证书的产生过程 X.509 数字证书 认证系统 证书链 证书…

智慧农业一体化平台概述

智慧农业是以物联网为基础,以信息化技术为支撑通过对于科研、生产、物流、销售的各个农业生产环节的信息化管理,实现科学指导、高效生产、科学预测、精准销售、数据决策。因此,构建智慧农业一体化平台,完成对于农业科技管理、农业生产过程管理、农产品物流与商贸管理,从而…

记一个js原生 日期 时间 处理 格式化 对象 Intl 方法

具体对应搜搜。听说用空格分开能增加关键词搜到的概率 说起来最近好像越来越懒了

Quartz---基础

1.概述 Quartz是一个完全由Java编写的开源任务调度框架,通过触发器来设置作业定时运行规则,控制作业的运行时间。Quartz框架的主要核心组件包括调度器、触发器和作业。调度器作为作业的总指挥,触发器作为作业的操作者,而作业则为应…

有关光猫、路由器、交换机、网关的理解

前提 在了解计算机网络的过程中,出现了这四个名词:光猫、路由器、交换机、网络。有点模糊,查阅互联网相关资料,进行整理。如有错误,欢迎大家批评指正。 光猫 首先光猫是物理存在的,大家在家里应该都可以…

代码随想录day25--回溯的应用4

LeetCode491.非递减子序列 题目描述: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,…

AI生图软件:让创意无限飞扬

随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们的日常生活之中,其中包括图像编辑。AI生图软件就是这样一种应用了AI技术的创新产品,它正在改变着图像编辑的方式,让我们能够以前所未有的方式创作和分享视觉内容。 一、什么是A…

300分钟吃透分布式缓存-01讲:业务数据访问性能太低怎么办?

这节课主要讲缓存的基本思想、缓存的优点、缓存的代价三个部分。 缓存的定义 先来看下缓存的定义。 & 缓存最初的含义,是指用于加速 CPU 数据交换的 RAM,即随机存取存储器,通常这种存储器使用更昂贵但快速的静态 RAM(SRAM&…

七、Mybatis缓存

缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存、可以避免频繁的与数据库进行交互,进而提高响应速度一级缓存是sqlSession级别的缓存,在操作数据库时需要构造sqlsession对象,在对象中有一个数据结构&a…

前端技巧之svg精灵图svg-sprite-loader

首先说明精灵图的必要性,其可以让我们只需要向服务器请求一次图片资源,就能加载很多图片,即能够减轻http请求造成的服务器压力。 然后这里要说明的是这个插件是webpack上面的,所以在vue2中比较好用,如果在vue3中&…

C语言—字符数组(3)

可能不是那么的完整,先凑合看吧,如果我学会如何修改以后,我慢慢回来修改的 1.编写程序实现对两个字符串的连接功能; 法一:不使用strcat函数,写程序直接实现,记得添加结束符,不然程序访问数组时候将变得不…

Vue路由

Vue路由 一、路由的基本使用二、组件的存放目录问题三、路由的封装抽离四、声明式导航-导航链接五、声明式导航-查询参数传参六、Vue路由-重定向七、编程式导航-两种路由跳转方式八、编程式导航-两种路径跳转传参九、多级路由十、缓存组件 一、路由的基本使用 1.目标 认识插件…

算法学习系列(三十五):贪心(杂)

目录 引言一、合并果子(Huffman树)二、排队打水(排序不等式)三、货仓选址(绝对值不等式)四、耍杂技的牛(推公式) 引言 上一篇文章也说过了这个贪心问题没有一个规范的套路和模板&am…