Python绘图入门:使用Matplotlib绘制柱状图

Python绘图入门:使用Matplotlib绘制柱状图

柱状图是一种常见的数据可视化方式,能够直观地展示不同类别之间的数据差异。在Python中,Matplotlib是一个非常强大且灵活的绘图库,它不仅能绘制简单的图表,还能创建复杂的多层次图形。本篇博客将带你一步步了解如何使用Matplotlib绘制一个基本的柱状图,并介绍一些常用的图表优化技巧。

1. 安装Matplotlib

在开始之前,确保你已经安装了Matplotlib库。如果还没有安装,可以使用以下命令进行安装:

pip install matplotlib
2. 绘制简单柱状图

这里我们有一组有关2024年高效毕业生就业去向的数据:

去向2023届2024届
单位就业57.6%55.5%
慢就业(暂无具体打算)18.9%19.1%
自由职业13.2%13.7%
国内继续学习4.9%6.5%

数据来源:智联招聘

首先,我们来绘制一个最简单的柱状图,将2024届高校毕业生去向数据进行可视化:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# 数据
employments = ['单位就业', '慢就业(暂无具体打算)', '自由职业', '国内继续学习']
rates = [55.5, 19.1, 13.7, 6.5]# 绘制柱状图
plt.bar(employments, rates)# 添加标题和标签
plt.title('2024届高校毕业生去向')
plt.xlabel('毕业去向')
plt.ylabel('比率(%)')# 显示图表
plt.show()

在这里插入图片描述

在这段代码中,plt.bar()用于创建柱状图,plt.title()plt.xlabel()plt.ylabel()分别用于添加标题和坐标轴标签。最后,plt.show()用于显示图表。

3. 自定义柱状图

为了让图表更加美观和信息丰富,我们可以对柱状图进行自定义。例如,可以改变柱子的颜色、添加网格、显示数值标签等。

# 自定义颜色和网格
plt.bar(categories, sales, color='skyblue')
plt.grid(axis='y', linestyle='--', alpha=0.7)# 显示数值标签
for i, value in enumerate(sales):plt.text(i, value + 0.5, str(value), ha='center')plt.show()

在这里插入图片描述

在这个例子中,我们将柱子颜色设为浅蓝色,并在y轴方向添加虚线网格。同时,使用plt.text()函数在每个柱子上方显示具体数值。

这里需要注意的是,添加无指向型注释文本有两种,text()figtext()方法。

text(x, y, s, fontdict=None, withdash=, **kwargs)
  • x, y:表示注释文本的位置。
  • s:表示注释文本的内容。
  • horizontalalignment或ha:表示水平对齐的方式,可以取值为’center’、'right’或 ‘left’。
  • verticalalignment或va:表示垂直对齐的方式,可以取值为’center’、‘top’、‘bottom’、‘baseline’或’center_baseline’
figtext(x, y, s, *args, **kwargs)
  • x, y Float 放置文本的位置。默认情况下,它在图形坐标[0,1]中
  • s String 文字字串

两种方法的不同之处在于,text()以图形的横纵坐标进行取值,figtext()使用完整的图形作为坐标,其中左下角表示(0,0),右上角表示(1,1)。图的中心是(0.5,0.5)。

4. 横向柱状图

如果数据类别较多,或者类别名称较长,横向柱状图可能会更适合。

# 绘制柱状图
plt.barh(employments, rates, color='lightcoral')plt.grid(axis='y', linestyle='--', alpha=0.7)# 添加标题和标签
plt.title('2024届高校毕业生去向')
plt.xlabel('比率(%)')
plt.ylabel('')

在这里插入图片描述

使用plt.barh()可以轻松创建横向柱状图,其他设置与竖向柱状图类似。

5. 多系列柱状图

如果你有多个系列的数据需要同时展示,可以使用多系列柱状图来对比不同系列之间的关系。例如,我们可以对比2023届和2024届的高校毕业生去向:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']# 数据
employments = ['单位就业', '慢就业(暂无具体打算)', '自由职业', '国内继续学习']
rates_2024 = [55.5, 19.1, 13.7, 6.5]
rates_2023 = [55.5, 19.1, 13.7, 6.5]# 设置柱子的位置
x = np.arange(len(employments))
width = 0.35  # 柱子的宽度# 绘制多系列柱状图
plt.bar(x - width/2, rates_2024, width, label='2024届')
plt.bar(x + width/2, rates_2023, width, label='2023届')# 添加标题和标签
plt.title('2024和2023届高校毕业生去向对比')
plt.xlabel('就业去向')
plt.ylabel('比率(%)')
plt.xticks(x, employments)  # 将x轴标签设置为就业去向
plt.legend()  # 显示图例plt.show()

在这里插入图片描述
在这个例子中,np.arange()用于生成x轴的位置数组,width设置了柱子的宽度。我们使用了两个plt.bar()来绘制不同系列的柱子,并通过调整它们的x位置来使其并排显示。

这里没有显示数值标签,请你学习完本博客后补充代码实现该功能。

6. 结语

通过这篇博客,你已经学习了如何使用Matplotlib创建和自定义柱状图。无论是简单的单系列柱状图,还是复杂的多系列柱状图,Matplotlib都能轻松实现。掌握这些基础后,你可以进一步探索Matplotlib的更多功能,例如叠加柱状图、柱状图与折线图组合等。请关注“pythons数据可视化专栏”,带你入门python绘图。

希望这篇文章对你有所帮助,欢迎在评论区分享你的问题和经验!

往期推荐:
1.使用 Matplotlib 绘制折线图
2.Python 绘图入门

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

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

相关文章

远程命令行控制SSH

第一次接触SSH是ROS小车作为服务端,通过ubuntu电脑客户端访问。因为机器人接键盘和屏幕操作起来不方便,所以使用SSH进行连接,方便对小车的操作。 1.服务端安装 打开终端查看ssh是否安装 sudo service ssh status 如果未安装 sudo apt upd…

【网络】私有IP和公网IP的转换——NAT技术

目录 引言 NAT工作机制​编辑 NAT技术的优缺点 优点 缺点 个人主页:东洛的克莱斯韦克-CSDN博客 引言 公网被子网掩码划分为层状结构,一个公网IP的机器又可以用很多私有IP搭建内网。在日常生活场景中用的都是私有IP,例如手机,…

目标检测算法,Yolov7本地化部署使用(一)

安全帽检测、口罩检测、行为检测、目标物体检测,随着深度学习和计算机视觉技术的不断发展,目标检测成为了研究热点之一。YOLOv7作为YOLO系列的新成员,以其高效和准确的性能受到了广泛关注。本文将介绍如何在本地部署并利用YOLOv7完成目标检测…

OpenCV图像处理——按最小外接矩形剪切图像

引言 在图像处理过程中,提取感兴趣区域(ROI)并在其上进行处理后,往往需要将处理后的结果映射回原图像。这一步通常涉及以下几个步骤: 找到最小外接矩形:使用 cv::boundingRect 或 cv::minAreaRect 提取感兴…

计算机毕业设计 助农产品采购平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

C# 中 Tuple 与 ValueTuples 之间的区别

在 C# 中,元组和值元组都用于在单个变量中存储多个值。但它们在语法、功能和性能方面存在一些关键差异。 一.Tuples(元组) 元组是一种引用类型,长期以来一直是 .NET 的一部分。它们是使用 System.Tuple 类创建的。 例子 using System; class Program…

07 STM32ADC

AD单通道和AD多通道 使用ADC可以对高电平和低电平之间的任意电压进行量化,最终用一个变量来表示,读取这个变量。所以ADC就是一个电压表,把引脚电压值测出来,放在一个变量里。 数字到模拟的桥梁,PWM来控制电机的速度&a…

springboot家校共育平台-计算机毕业设计源码54235

摘 要 采用高效的SpringBoot框架,家校共育平台为家长与教师提供了便捷的沟通渠道。该平台整合了丰富的教育资源,实现了家校之间的即时信息互通,从而助力协同教育。 为进一步方便用户访问和使用,平台与微信小程序进行了深度整合。家…

SPAW7000高精度功率分析记录仪,测试方案

测试目标 评估双电机四驱系统中前后电机的性能。 分析前后电机之间的实时联动情况。 测量并分析电机控制器的输入与输出功率。 计算功率转换效率和损耗。 验证电机系统的谐波特性。 测试设备 SPAW7000高精度功率分析记录仪:用于测量功率、电压、电流等参数&am…

【LeetCode Cookbook(C++ 描述)】一刷二叉树综合(上)

目录 LeetCode #226:Invert Binary Tree 翻转二叉树「遍历」「分而治之」广度优先搜索:层序遍历 LeetCode #101:Symmetric Tree 对称二叉树递归法迭代法 LeetCode #100:Same Tree 相同的树递归法迭代法 LeetCode #559:…

八种排序算法的复杂度(C语言)

归并排序(递归与非递归实现,C语言)-CSDN博客 快速排序(三种方法,非递归快排,C语言)-CSDN博客 堆排序(C语言)-CSDN博客 选择排序(C语言)以及选择排序优化-CSDN博客 冒泡排序(C语言)-CSDN博客 直接插入排序(C语言)-CSDN博客 希尔排序( 缩小增量排序 )(C语言)-CSDN博客 计数…

赋能基层,融合创新:EasyCVR视频汇聚平台构建平安城市视频共享系统

一、雪亮工程建设的意义 雪亮工程的核心在于通过高清视频监控、环境监测和智能预警等先进技术手段,构建一个高效、智能、安全、便捷的社会安全防控体系。这一工程的建设不仅代表了现代化科技手段在城市治安管理中的应用,更是提升社会安全保障能力、推动…

LeetCode.3152.特殊数组II

题目描述: 如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组 。 你有一个整数数组 nums 和一个二维整数矩阵 queries,对于 queries[i] [fromi, toi],请你帮助你检查 子数组 nums[fromi..toi…

纷享销客CRM AI产品架构概览、产品特色

一、纷享销客CRM AI产品架构概览 纷享AI平台架构分为三个主要层次:AI基础设施层、AI平台层和AI应用层。每个层次都由一系列功能模块组成,旨在为客户提供强大的技术支持和灵活的解决方案。 1.Al基础设施层 AI基础设施层是整个AI平台的底层支撑&#xff…

使用WooCommerce订阅续订进行货到付款:自定义订单状态

WooCommerce订阅插件允许商店设置周期性的订阅产品。客户购买订阅后,系统会自动根据设定周期进行续订。但对于货到付款的场景,自动续订就面临挑战。 自定义订单状态 为了实现货到付款的续订流程,我们需要创建一个自定义订单状态。以下是具体…

牛客刷题总结——Python入门07:内置函数

🤵‍♂️ 个人主页: @北极的三哈 个人主页 👨‍💻 作者简介:Python领域优质创作者。 📒 系列专栏:《牛客题库-Python篇》 🌐推荐《牛客网》——找工作神器|笔试题库|面试经验|实习经验内推,求职就业一站解决 👉 点击链接进行注册学习 文章目录 010 内置函…

鸿蒙开发入门day06-ArkUI简介

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 ArkUI简介 基本概念 两种开发范式 不同应用类型支持的开发范式 …

Linux--应用层协议HTTP协议(http服务器构建)

目录 1.HTTP 协议 2.认识 URL 3.urlencode 和 urldecode(编码) urlencode(URL编码) urldecode(URL解码) 4.HTTP 协议请求与响应格式 4.1HTTP 常见方法(三种) 5.HTTP 的状态码…

如何妙用哈希表来优化遍历查找过程?刷题感悟总结,c++实现

先上题目 题目链接:题目链接 这题我最先想到的就是前缀和a,构造好了以后就遍历每一个[l,r]数组(满足题目要求的连续区间数组),奈何倒数第二个样例时间超限 先给出原思路代码 class Solution { public:int subarray…

【深入理解SpringCloud微服务】Ribbon源码解析

【深入理解SpringCloud微服务】Ribbon源码解析 Ribbon的原理RestTemplate中的拦截器链Ribbon的拦截器如何将拦截器放入到RestTemplate中 Ribbon中的核心类LoadBalancerAutoConfigurationLoadBalancerInterceptorLoadBalancerClientILoadBalancerServerListIRuleIPing Ribbon核心…