You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在支出追踪应用中绘制柱状图遇重复日期合并问题求助

解决支出追踪应用中重复日期柱状图合并问题

要让重复日期不被合并,每个金额对应独立柱子,核心是让绘图库把日期当作离散分类变量而非连续时间序列处理。以下是主流绘图库的具体解决方案:

Matplotlib 实现方式

Matplotlib默认会将相同日期合并为时间轴上的单个点,解决方法是手动指定每个柱子的位置,再绑定对应日期标签:

import matplotlib.pyplot as plt

# 你的原始数据
date = ['2014-1-4', '2014-1-4', '2014-1-4', '2014-1-5']
amount = [100, 5000, 1000, 2000]

# 用数据索引作为每个柱子的X轴位置
plt.bar(range(len(date)), amount)
# 将日期设置为X轴刻度标签,旋转45度避免重叠
plt.xticks(range(len(date)), date, rotation=45)
plt.xlabel('日期')
plt.ylabel('金额')
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

这样每个重复日期都会在X轴上独立显示,对应各自的金额柱子。

Plotly 实现方式

Plotly默认也会合并相同日期,通过强制X轴为分类类型即可解决:

import plotly.express as px
import pandas as pd

# 转换为DataFrame方便处理
df = pd.DataFrame({
    'date': ['2014-1-4', '2014-1-4', '2014-1-4', '2014-1-5'],
    'amount': [100, 5000, 1000, 2000]
})

# 绘制柱状图,强制X轴为分类类型
fig = px.bar(df, x='date', y='amount')
fig.update_layout(xaxis={'type': 'category'})
fig.show()

或者用索引作为X轴位置,绑定日期标签:

fig = px.bar(df, x=df.index, y='amount')
fig.update_layout(
    xaxis=dict(
        tickmode='array',
        tickvals=df.index,
        ticktext=df['date']
    )
)
fig.show()

通用核心思路

无论使用哪个绘图库,只要做到以下两点之一即可:

  • 将日期转换为字符串类型,让绘图库将每个字符串视为独立的分类项
  • 手动指定每个柱子的X轴位置(比如用数据的索引),再将日期设置为对应的刻度标签

这样就能确保每个金额数据都对应独立的柱子,重复日期不会被合并。

内容的提问来源于stack exchange,提问作者Aalok karn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:42:41