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

Plotly中实现随机日期间等间距的柱状图绘制

问题描述

我用Plotly Express的px.bar绘制柱状图,代码如下:

px.bar(data_, x='DATE', y='Change')

其中DATE是日期时间列,当前图表的柱子会按照日期跨度分散排列,我需要让所有柱子等间距紧密排列,请问有没有参数可以实现这个需求?

示例数据:

0  2015-05-11   7.15
1  2015-05-12 -14.56
2  2015-06-19   2.18
3  2015-06-22 -12.73
4  2018-01-18  19.17
5  2020-03-16  -6.92
6  2020-03-17  -6.07
7  2020-03-18 -12.49
8  2020-03-19 -30.54
9  2020-03-20 -41.73
10 2020-03-23 -37.37
11 2020-03-24 -28.02
12 2020-03-25 -25.29
13 2020-03-26 -21.15
14 2020-04-02  -3.60
15 2021-05-19  -8.02
16 2021-05-20  -6.45
17 2021-06-04  -8.38
18 2021-06-07  -8.81
19 2021-06-08  -6.05
20 2021-06-10  -8.01
21 2022-02-28  -9.79
22 2022-03-09 -10.81
23 2022-06-14 -16.04
24 2022-06-15 -22.17
25 2022-06-16 -19.93
26 2022-06-17 -12.68
27 2022-08-05  15.76
28 2022-09-22  -4.23
29 2022-09-28  10.02
解决方案

Plotly Express的px.bar没有直接参数强制日期轴等间距,但可以通过两种简单方法实现需求:

方法1:将日期列转为字符串类型

把DATE列从datetime类型转为字符串,Plotly会将其当作分类变量处理,自动让柱子等间距排列:

# 转换日期列类型
data_['DATE'] = data_['DATE'].astype(str)
# 绘制柱状图
fig = px.bar(data_, x='DATE', y='Change')
fig.show()

方法2:用索引作为x轴,自定义刻度标签

如果需要保留日期的datetime属性(方便后续时间相关操作),可以用数据索引作为x轴,再将日期设置为x轴刻度标签:

fig = px.bar(data_, x=data_.index, y='Change')
# 自定义x轴刻度与标签
fig.update_xaxes(
    tickmode='array',
    tickvals=data_.index,
    ticktext=data_['DATE'].dt.strftime('%Y-%m-%d')  # 可自行调整日期显示格式
)
fig.show()

额外优化:调整柱子紧密程度

如果想让柱子更紧凑,可以添加barmode='group'或调整width参数:

fig = px.bar(data_, x='DATE', y='Change', barmode='group', width=0.8)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:03:31