Python利用pandas和matplotlib实现绘制双柱状图
在数据分析和可视化中,常用的一种图形类型是柱状图,柱状图能够清晰地展示不同分类变量的数值,并支持多组数据进行对比,本篇文章将介绍python如何使用pandas和matplotlib绘制双柱状图,需要的可以参考下
目录
- 准备工作
- 导入所需库
- 读取并处理数据
- 绘制柱状图
- 添加标签和标题
- 添加数据标签
- 显示图形
- 效果图展示
- 完整代码
在数据分析和可视化中,常用的一种图形类型是柱状图。柱状图能够清晰地展示不同分类变量的数值,并支持多组数据进行对比。本篇文章将介绍如何使用Python绘制双柱状图。
准备工作
在开始绘制柱状图之前,需要先安装matplotlib和pandas这两个Python库。可以通过pip安装:
pip install matplotlib pip install pandas
导入所需库
import pandas as pd import matplotlib.pyplot as plt
读取并处理数据
# 读取Excel文件 df = pd.read_excel(r'C:\Users\Admin\Desktop\数据核对\新建 XLSX 工作表.xlsx', sheet_name='Sheet3') # 设置柱状图的宽度 bar_width = 0.35 # 设置x轴的位置 x = df.index
首先使用Pandas读取Excel文件,然后根据实际情况设置柱状图的宽度和x轴位置。这里我们使用DataFrame的索引作为x轴。
绘制柱状图
# 绘制柱状图 fig, ax = plt.subplots() rects1 = ax.bar(x - bar_width/2, df['销售数量'], bar_width, label='销售数量') rects2 = ax.bar(x + bar_width/2, df['销售数量2'], bar_width, label='销售数量2')
使用matplotlib绘制柱状图,其中subplots()方法会返回一个Figure对象和一个Axes对象。然后使用bar()方法绘制两组柱状图,并设置标签。
添加标签和标题
# 添加标签和标题
ax.set_xlabel('店铺名称')
ax.set_ylabel('销售数量')
ax.set_title('Double Bar Chart')
ax.set_xticks(x)
ax.set_xticklabels(df['店铺名称'])
ax.legend()
添加数据标签
# 添加数据标签
for rect in rects1:
height = rect.get_height()
ax.annotate('{}'.format(height),
xy=(rect.get_x() + rect.get_width() / 2, height),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='bottom')
for rect in rects2:
height = rect.get_height()
ax.annotate('{}'.format(height),
xy=(rect.get_x() + rect.get_width() / 2, height/2),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='top')
对于每个柱状图,使用annotate()方法添加数据标签。
显示图形
# 显示图形 plt.show()
最后使用show()方法显示图形。
效果图展示
完整代码
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['SimHei'] # 指定中文字体为黑体
# 读取Excel文件
df = pd.read_excel(r'C:\Users\Admin\Desktop\数据核对\新建 XLSX 工作表.xlsx', sheet_name='Sheet3')
# 设置柱状图的宽度
bar_width = 0.35
# 设置x轴的位置
x = df.index
# 绘制柱状图
fig, ax = plt.subplots()
rects1 = ax.bar(x - bar_width/2, df['销售数量'], bar_width, label='销售数量')
rects2 = ax.bar(x + bar_width/2, df['销售数量2'], bar_width, label='销售数量2')
# 添加标签和标题
ax.set_xlabel('店铺名称')
ax.set_ylabel('销售数量')
ax.set_title('Double Bar Chart')
ax.set_xticks(x)
ax.set_xticklabels(df['店铺名称'])
ax.legend()
# 添加数据标签
for rect in rects1:
height = rect.get_height()
ax.annotate('{}'.format(height),
xy=(rect.get_x() + rect.get_width() / 2, height),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='bottom')
for rect in rects2:
height = rect.get_height()
ax.annotate('{}'.format(height),
xy=(rect.get_x() + rect.get_width() / 2, height/2),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='top')
# 显示图形
plt.show()
到此这篇关于Python利用pandas和matplotlib实现绘制双柱状图的文章就介绍到这了,更多相关Python双柱状图内容请搜索数字提纲【www.sztg.com.cn】以前的文章或继续浏览下面的相关文章希望大家以后多多支持数字提纲【www.sztg.com.cn】!
如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!
猜您喜欢
天野喜孝绘制原创新动画《斩-ZAN-》启动 制作阵容豪华
2026-07-03由著名插画家天野喜孝领导绘制原话,全新原创动画《斩-ZAN-》正式开启启动,同时公布了制作阵容,汇集业界精英元老豪华至极。 《斩-ZAN-》的导演邀请了池田成和吉田彻,机械设计是大河原邦男,多位日本名匠/动画精英元老们集结在一起。在豪华制作阵容的基础上,以天野先生的原创艺术为基础,汇集日本最高峰的动画制作者阵容,而且一张一张地用手绘制作。 本作故事讲述了了战国时代的年轻武士·ZAN,被神秘的少...
利用 MiMo Code 实现自动化构建工具链配置
2026-06-28MiMoCode是具备真实执行能力的构建助手,支持自然语言驱动项目初始化、CI/CD配置、Docker化等全流程;需启用Build模式并校验工程标识,自动生成合规配置且保障跨文件一致性与安全回滚。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ MiMoCode不是只写代码的助手,它能直接参与构建流程本身——从初始化项目、安装依赖、配置CI/CD脚本,...
如何利用 MiMo Code 自动转换旧代码库至新技术栈
2026-06-28MiMoCode转换旧代码库的关键是让AI理解项目上下文并分阶段安全执行:通过CLAUDE.md提供技术栈、保留模块等锚点;以Goal模式驱动渐进重构;依托四层记忆智能替换依赖;所有改动经Git分支、原子提交与总结报告交付。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 用MiMoCode转换旧代码库,关键不是“一键替换”,而是让AI理解项目上下文、...
戴安娜亲手绘制 卡普空免费更新《识质存在》涂鸦宇航服致敬父亲节
2026-06-19为庆祝父亲节,卡普空在昨日举办的日本专属节日特别直播活动中宣布,旗下科幻动作冒险游戏《识质存在》中备受玩家喜爱的“涂鸦宇航服”将于2026年6月19日正式加入正式版游戏,向所有玩家免费开放。 这套独特的“涂鸦宇航服”最初仅限试玩版的玩家体验,是正式版中无法获取的独占内容,一度让许多未能参与试玩的爱好者感到遗憾。此次卡普空选择在父亲节期间将其作为礼物赠予全体玩家,无疑是对游戏主角——调查员休·威廉姆...
观涛云信如何利用彩信发送高清产品海报
2026-06-04观涛云信不是彩信平台,它基于微信公众号二维码+云端定制+邮政印寄的OTO模式,全程无MMS协议接入,输出为实体明信片;而彩信需MMSC网关、WAPPush及80KB内WML格式,技术路径完全不兼容。 观涛云信不是彩信发送平台,它不支持直接通过彩信通道发送高清产品海报。该系统定位为景区明信片云端定制服务,依赖中国邮政线下印制与投递链路,所有内容最终生成实体纸质明信片,而非手机端可即时查看的多媒体消息...
Kimi如何快速汇总多部门销售数据_利用Kimi文件分析能力
2026-06-04Kimi可快速合并销售部、市场部、客服部三份Excel表,按部门分组计算总销售额和平均单笔金额,并自动剔除重复订单与异常值;需先上传文件、分步清洗(识别问题字段→格式标准化→确认主键去重逻辑)、再分类汇总,最后导出CSV格式结构化结果。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 你需要把销售部、市场部、客服部三份Excel数据表合并统计,按部门分...
如何利用Kimi查找最新的Linux内核更新说明_利用Kimi实时搜索技术文档
2026-06-04Kimi可通过实时联网搜索精准获取kernel.org发布的最新Linux内核官方更新说明。需开启【实时搜索】并使用指定指令(如“site:kernel.org‘TheLinuxKernelchangelog’latest”),优先访问git.kernel.org链接,再通过Ctrl+F定位“Fixes:”“drivers/”等关键字段提取硬件修复信息。 你需要快速获取最新linux内核版本的官方...
如何利用Python Django的Include标签拆分大型模板文件?
2026-06-04{%include%}能拆分模板但需注意变量作用域、路径规则(仅从templates根目录解析)和循环中重复渲染的性能问题,非万能解法。 直接说结论:用{%include%}能拆分模板,但必须注意变量作用域、路径解析规则和循环内重复渲染的性能陷阱——它不是“无脑切文件”的万能解药。 include标签怎么写才不报TemplateDoesNotExist Django的{%include%}默认只在...
在Python中如何利用PyTorch实现Transformer位置编码的计算?
2026-06-04torch.nn.Embedding不适合实现正弦位置编码,因其引入可学习参数且无法保证公式结构;正确做法是手动向量化计算sin/cos编码并注册为buffer。 PyTorch中torch.nn.Embedding不适合直接实现正弦位置编码 正弦位置编码(SinusoidalPositionalEncoding)是原始Transformer论文中提出的固定编码方式,它不参与训练、无参数、依赖序列...
如何解决Python测试中数据库连接频繁开闭问题_利用fixture的yield模式
2026-05-29pytestfixture中用yield管理pymysql连接更稳,因其确保无论测试是否异常都会执行清理;应避免全局连接池、多次close、共享连接,并在yield前ping保活和重置状态。 频繁在pytest测试中用pymysql.connect()打开又关闭数据库连接,不是“看起来不优雅”的问题,而是会直接拖慢测试执行、触发MySQL的max_connections限制、甚至让MySQLser...
