当前位置:首页 > 文章列表 > 文章 > python教程 > 记账应用怎么画带重复日期的条形图

记账应用怎么画带重复日期的条形图

2026-01-23 11:18:40 0浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《记账应用如何画带重复日期的条形图》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

如何在记账应用中绘制带重复日期的条形图

本文介绍在 Expense Tracker 应用中正确绘制条形图的方法:当日期列表存在重复值(如多笔同日支出)时,避免 Matplotlib 自动去重,确保每个数据点独立显示。

在开发个人记账应用时,常需可视化每日支出明细。但若直接将含重复日期的列表(如 ['2014-1-4', '2014-1-4', '2014-1-4', '2014-1-5'])传给 plt.bar(date, amount),Matplotlib 会将相同日期视为同一分类并合并(或仅保留一个刻度),导致条形数量少于实际交易数——这显然违背“每笔支出独立呈现”的设计初衷。

根本原因在于:plt.bar() 默认将 x 轴视为分类索引,当传入字符串列表时,它会对重复标签做隐式聚合,而非按位置逐个渲染。解决方案是解耦数据定位与标签显示:使用整数索引作为柱子的横坐标(保证一一对应),再通过 plt.xticks() 单独指定每个柱子下方显示的日期标签。

以下是推荐实现方式:

import matplotlib.pyplot as plt

# 示例数据:四笔交易,前三笔发生在同一天
date = ['2014-1-4', '2014-1-4', '2014-1-4', '2014-1-5']
amount = [100, 5000, 1000, 2000]

# 创建等长整数索引 [0, 1, 2, 3]
ind = list(range(len(date)))

# 绘制条形图:x 坐标为索引,y 值为金额
fig, ax = plt.subplots(figsize=(8, 5))
ax.bar(ind, amount, color='#4a90e2', alpha=0.8)

# 将每个索引位置标注对应日期(支持重复)
plt.xticks(ticks=ind, labels=date, rotation=30, ha='right')

# 添加基础图表元素
ax.set_ylabel('Amount (¥)')
ax.set_title('Daily Expense Breakdown')
ax.grid(axis='y', alpha=0.3)

plt.tight_layout()
plt.show()

✅ 关键要点:

  • ind = list(range(len(date))) 生成唯一位置索引,确保每笔交易都有独立柱子;
  • plt.xticks(ticks=ind, labels=date) 显式绑定每个索引到其原始日期字符串,保留重复信息;
  • rotation=30 和 ha='right' 提升长日期标签的可读性;
  • 避免使用 plt.bar(date, amount) 直接绘图——这是导致去重的根源。

⚠️ 注意事项:

  • 若数据量较大(如数百条),建议对 x 轴标签做分组聚合(如按周/月汇总),否则图表将过于拥挤;
  • 如需进一步区分同日多笔交易,可在标签中加入序号(如 '2014-1-4 #1'),或改用散点图+误差线;
  • 在 Web 应用(如 Flask/Django)中嵌入图表时,请使用 FigureCanvasAgg 渲染为 PNG 或集成 Plotly 实现交互式缩放。

该方法轻量、可靠,完美适配记账类应用中“按原始记录粒度展示”的核心需求。

本篇关于《记账应用怎么画带重复日期的条形图》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

番茄音乐离线听歌教程分享番茄音乐离线听歌教程分享
上一篇
番茄音乐离线听歌教程分享
动态文本溢出检测与字体自适应方法
下一篇
动态文本溢出检测与字体自适应方法
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    256次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    301次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    280次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    257次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    67次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码