【plt.bar绘制条形图】:从入门到精通,只需一篇文章!【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等,它们提供了更多的功能和样式选择。

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

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

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

🌳 四、 结尾

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

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

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

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

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

相关文章

Spring Boot 笔记 025 主界面

1.1 路由搭建 1.1.1 安装vue router npm install vue-router4 1.1.2 在src/router/index.js中创建路由器,并导出 import { createRouter, createWebHistory } from vue-router//导入组件 import LoginVue from /views/Login.vue import LayoutVue from /views/La…

Eliminating Domain Bias for Federated Learning in Representation Space【文笔可参考】

文章及作者信息: NIPS2023 Jianqing Zhang 上海交通大学 之前中的NeurIPS23论文刚今天传到arxiv上,这次我把federated learning的每一轮看成是一次bi-directional knowledge transfer过程,提出了一种促进server和client之间bi-direction…

【机构vip教程】Requests(1):Requests模块简介与安装

Requests模块简介 在python的标准库中,虽然提供了urllib,utllib2,httplib,但是做接口测试,requests使用更加方便快捷,正如官方说的,“让HTTP服务人类”。 Requests是用python语言基于urllib编写的,采用的是…

【漏洞复现-通达OA】通达OA swfupload_new存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

UVa1359/LA3491 Hills

题目链接 本题是2005年ICPC亚洲区域赛杭州欧赛区的H题 题意 平面上有 n(n≤500)条线段,其中每条线段的端点都不会在其他线段上。你的任务是数一数有多少个“没有被其他线段切到”的三角形(即小山)。如下图所示&#x…

初始树莓派 + VMware17 安装树莓派(Raspberry Pi 4B/5)

文章目录 树莓派入门 VMware17 安装树莓派(Raspberry Pi 4/5B)前言一、树莓派入门指南:从零开始探索树莓派树莓派4B和5对比 二、在VMware Workstation 17上安装树莓派4B/5操作系统:实现强大性能与便捷模拟工具准备开始安装树莓派1.创建一个虚拟机2. 选择…

[Docker实战] 旭日X3派上Docker Openwrt +Samba 实现局域网NAS 开启AP模式

​ 🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[旭日X3派] [Docker实战] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 …

【C++】类与对象【定义、访问限定符、this指针】

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:http://t.csdnimg.cn/eCa5z 目录 面向过程和面向对象初步认识 类的引入 类的定义 成员变量命名规则的建议: 类的访问限定符及…

Java面试第一站:计算机网络基础知识

该系列会持续更新,关注我,第一时间获取我的最新动态哟 Java面试中,经常会问到跟计算机网络知识相关的考点,有的小伙伴不是很明白。考察网络知识有什么意义? 因为编程的时候,多数的情况下是不用我们来编写 …

单主模式和多主模式切换

1 组复制模式切换注意点 组复制有两种运行模式,一种是单主模式,一种是多主模式。这个模式是在整个组中设置的,由 group_replication_single_primary_mode 这个系统变量指定,而且在所有成员上必须保持一致。ON 表示单主模式&#…

OpenAI Sora视频生成机制:时空补丁

AI如何将静态图像转化为动态、逼真的视频?OpenAI 的 Sora 通过时空补丁(spacetime patches)的创新使用给出了答案。 独特的视频生成方法 在生成模型的世界中,我们看到了从 GAN 到自回归和扩散模型的许多方法,它们都有…

基于结点电压法的配电网状态估计算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 结点电压法的基本原理 4.2 结点电压法在配电网状态估计中的应用 5.完整程序 1.程序功能描述 基于结点电压法的配电网状态估计算法.对配电网实施有效控制和操作的前提是实时数据库中数据…

在职阿里6年,一个28岁女软件测试工程师的心声

简单的先说一下,坐标杭州,16届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有4家&am…

Swift 5.9 新 @Observable 对象在 SwiftUI 使用中的陷阱与解决

概览 在 Swift 5.9 中,苹果为我们带来了全新的可观察框架 Observation,它是观察者开发模式在 Swift 中的一个全新实现。 除了自身本领过硬以外,Observation 框架和 SwiftUI 搭配起来也能相得益彰,事倍功半。不过 Observable 对象…

10M上下文,仅靠提示就掌握一门语言,Google Gemini 1.5被OpenAI抢头条是真冤

这两天,几乎整个AI圈的目光都被OpenAI发布Sora模型的新闻吸引了去。其实还有件事也值得关注,那就是Google继上周官宣Gemini 1.0 Ultra 后,火速推出下一代人工智能模型Gemini 1.5。 公司首席执行官 Sundar Pichai携首席科学家Jeff Dean等众高…

在网络死磕5-10年的人,最后都怎么样了?

你们好,我是老杨。 此时此刻,如果你仍然在一家公司坚强的干着活,你已经打败了80%的职场朋友了。 现如今,从一毕业就做同一个行业超过5年的人,已经少之又少,更别说同一家公司干超过五年了。 这对别的行业…

redis 值中文显示乱码

问题: 解决办法: exit退出 进入时添加 --raw参数

【C++初阶】新手值得一做vector的oj题

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

解决updatexml和extractvalue查询显示不全

报错注入是一种常见的SQL 注入方式,通过注入代码,触发数据库的错误响应,并从错误信息中获取有用的信息。 updatexml和extractvalue updatexml和extractvalue 是常用的两个报错注入函数 http://localhost/sqli/Less-5/?id1%27and%20updat…

解锁Spring Boot中的设计模式—04.桥接模式:探索【桥接模式】的奥秘与应用实践!

桥接模式 桥接模式也称为桥梁模式、接口模式或者柄体(Handle and Body)模式,是将抽象部分与他的具体实现部分分离,使它们都可以独立地变化,通过组合的方式建立两个类之间的联系,而不是继承。 桥接模式是一种…
最新文章