当前位置: 首页 > news >正文

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 绘图入门

相关文章:

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

Python绘图入门:使用Matplotlib绘制柱状图 柱状图是一种常见的数据可视化方式,能够直观地展示不同类别之间的数据差异。在Python中,Matplotlib是一个非常强大且灵活的绘图库,它不仅能绘制简单的图表,还能创建复杂的多…...

Qt5编译qmqtt库使用MQTT协议连接华为云IOT完成数据上传与交互

一、前言 随着物联网技术的发展,越来越多的设备通过网络互相连接,形成了庞大的智能系统。这些系统能够收集、分析并响应各种数据,从而实现自动化控制和智能化管理。在这个背景下,MQTT 成为了一个广泛使用的轻量级消息传输协议,特别适用于资源受限的环境,如移动应用或远程…...

mysql速起架子

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 下载mysql tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 解压 mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-8.0 改名 去到bin目录 cd bin mkdir data gr…...

云动态摘要 2024-08-14

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 注册阿里云免费领云服务器_云服务器ECS_阿里云 阿里云 2024-08-14 云上试用新玩法,个人享300元免费额度,企业享660元免费额度,多种规格随心试 [免费体验…...

Elasticsearch 桶(Bucket)聚合详解及示例

在 Elasticsearch 中,桶(Bucket)聚合是一种强大的工具,它允许我们对数据进行分组并统计每组的数量。这种聚合类型对于理解数据的分布和进行分组统计非常有用。本文将详细介绍 Elasticsearch 的桶聚合,并提供完整的示例…...

Django基础知识

文章目录 新建Django项目helloworld关联数据库admin 新建Django项目 创建django-admin startproject project_name 运行 python manage.py runserver 创建app: python manage.py startapp app_name 目录: 配置文件 settings.py 路由配置 urls.py 项目管理 manage.p…...

使用 nginx 搭建代理服务器(正向代理 https 网站)指南

简介 正向代理 简介 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是俗称的内网,局域网外的互联网就是外网,在一些特殊场景内…...

深入解析亚马逊数据采集工具选择:Data API/Scrape API/Pangolin采集器

引言 在当今电商领域,亚马逊已成为全球最大的在线零售平台之一。随着竞争的加剧和市场的多样化,商家和企业不仅需要优秀的产品和服务,还需要通过深入的数据分析来制定更加精准的市场策略。因此,采集亚马逊站点数据已成为企业实现…...

探索Linux多样性:主流发行版及其应用场景

目录 引言 Debian:稳定性的标杆 Ubuntu:易用性的代表 Red Hat Enterprise Linux (RHEL):企业的首选 Fedora:创新的前沿 CentOS:开源的稳定之选 Arch Linux:高级用户的定制天堂 Gentoo:性…...

CentOS7.6 HAproxy-7层负载均衡集群——实施方案

目录 1、前期环境准备 1.准备4台主机 1. 设置主机名 2. 设置IP地址然后重启网卡 3. 关闭防火墙和selinux 4. 全部的服务器完成时间统一 二、配置haproxy(192.168.200.11)服务器 1. 安装haproxy 2. haproxy 配置中分成五部分内容 3. 配置HAproxy(192.168.2…...

升级ubuntu22.10到24.04

将所有kinetic换成noble,noble是24.04源,sed或手动改。 cd /etc/aptgrep -nr kinetic将old-releases.ubuntu.com替换成国内的地址,因为2210国内源没找到,没有了,但是现在更新到24.04,国内是有的。 apt up…...

YOLO好像也没那么难?

“学YOLO的念头是想整个游戏外挂!” 目录 基本原理 模型推理 IOU交并比 NMS非极大值抑制 模型训练 损失函数LOSS 代码实现 YOLO学习渠道 基本原理 模型推理 学习一个新的神经网络结构,作者认为整明白输入和输出是怎么回事就OK了,至于…...

html编写贪吃蛇页面小游戏(可以玩)

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>贪吃蛇小游戏</title><style>body {…...

【淘宝购买的源码靠谱吗】

文章目录 前言一、项目需求二、卖家评价三、价格质量四、源码细节五、技术支持六、合法性七、市场环境八、风险评估总结 前言 在淘宝上购买的源码质量和可靠性存在不确定性。淘宝作为一个综合性电商平台&#xff0c;提供了各种各样的商品和服务&#xff0c;包括源代码。然而&a…...

C++ | list

前言 本篇博客讲解cSTL中的list &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&…...

Vue3 v-bind 指令用法

在 Vue 3 中&#xff0c;v-bind 指令用于将表达式的值绑定到 DOM 元素的属性上。这个指令的语法与 Vue 2 相同&#xff0c;但有一些细微的变化和改进。 以下是 Vue 3 中 v-bind 指令的基本用法&#xff1a; 基本用法: <button v-bind:class"{ active: isActive }"…...

通过Go示例理解函数式编程思维

一个孩子要尝试10次、20次才肯接受一种新的食物&#xff0c;我们接受一种新的范式&#xff0c;大概不会比这个简单。-- 郭晓刚 《函数式编程思维》译者 函数式编程(Functional Programming, 简称fp)是一种编程范式&#xff0c;与命令式编程(Imperative Programming)、面向对象编…...

刷题DAY7

三角形面积 题目&#xff1a;已知三角形的边长a&#xff0c;b和从、&#xff0c;求其面积 输入&#xff1a;输入三个实数a&#xff0c;b&#xff0c;c&#xff0c;表示三边长 输出&#xff1a;输出面积&#xff0c;保留三位小数 输入&#xff1a;1 2 2.5 输出&#xff1…...

离线数据开发流程小案例-图书馆业务数据

参考 https://blog.csdn.net/m53931422/article/details/103633452 https://www.cnblogs.com/jasonlam/p/7928179.html https://cwiki.apache.org/confluence/display/Hive/LanguageManualUDF https://medium.com/jackgoettle23/building-a-hive-user-defined-function-f6abe9…...

GPT-5:未来已来,你准备好了吗

GPT-5&#xff1a;未来已来&#xff0c;你准备好了吗&#xff1f; 在人工智能的浩瀚星空中&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术如同璀璨星辰&#xff0c;不断引领着技术革新的浪潮。而在这股浪潮中&#xff0c;OpenAI的GPT&#xff08;Generative Pre-tr…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...