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

如何在Python的Plotly图表中将X轴数值标签格式化为日期时间标签?

Plotly散点图:保留数值X轴逻辑,仅替换轴标签为日期时间

问题背景

现有如下Plotly散点图代码:

import plotly.graph_objects as go
import pandas as pd

x = [1,2,3,4,5]
y = [3,2,3,5,6]

fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y))
fig.show()

希望将X轴的数值标签替换为生成的日期序列:

dates = pd.date_range('2022-01-01', periods=len(x), freq='1H')

生成的日期数组为:

array(['2022-01-01T00:00:00.000000000',
'2022-01-01T01:00:00.000000000',
'2022-01-01T02:00:00.000000000', '2022-01-01T03:00:00.000000000',
'2022-01-01T04:00:00.000000000'], dtype='datetime64[ns]')

同时需确认:能否保留数值X轴的逻辑(比如基于数值位置添加垂直线),仅将轴显示标签替换为日期时间?以及当前问题标题是否清晰?

解决方案

直接通过Plotly的X轴配置项,指定tickvals(对应原数值X轴的位置)和ticktext(对应要显示的日期标签)即可,核心是保留底层数值轴,仅替换显示文本:

import plotly.graph_objects as go
import pandas as pd

x = [1,2,3,4,5]
y = [3,2,3,5,6]
dates = pd.date_range('2022-01-01', periods=len(x), freq='1H')
# 将日期格式化为可读性强的字符串(如'2022-01-01 00:00')
date_labels = dates.strftime('%Y-%m-%d %H:%M')

fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y))
# 配置X轴:保留数值轴逻辑,替换显示标签
fig.update_xaxes(
    tickmode='array',
    tickvals=x,
    ticktext=date_labels,
    title_text='日期时间'
)
fig.show()

垂直线添加可行性

完全可行。因为X轴底层仍基于数值[1,2,3,4,5]运行,添加垂直线时直接使用数值位置即可,示例代码:

# 在X=3的位置添加红色虚线垂直线
fig.add_vline(x=3, line_width=2, line_dash="dash", line_color="red")
fig.show()

标题建议

建议使用「Plotly散点图:保留数值X轴逻辑,仅替换轴标签为日期时间」作为标题,该标题明确点明核心需求——保留数值轴功能+替换显示标签为日期,无歧义且清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:40:43