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

Plotly:如何将X轴日期时间格式化为自定义格式[12AM=12a]?

Plotly X轴日期刻度自定义格式解决方案

能否仅通过tickformat参数实现?

不行。因为Plotly的tickformat基于d3-time-format规范,其中%p指令输出的是完整的上午/下午标识(如AM/PM),没有直接提供输出单个小写字母a/p的选项,无法仅靠tickformat参数得到你需要的12a/3a这类格式。

配合lambda函数的实现方法

你可以通过自定义刻度文本(ticktext)结合lambda函数来实现需求,步骤如下:

  1. 获取X轴原始刻度值(tickvals)
  2. 用lambda函数处理每个刻度值,格式化为目标样式
  3. 更新X轴的tickmode为array,绑定处理后的刻度文本和原始刻度值

示例代码:

import pandas as pd
import plotly.express as px

# 创建示例图表(替换为你的实际图表)
df = pd.DataFrame({'time': pd.date_range('2024-01-01 00:00', periods=10, freq='3H'), 'value': range(10)})
fig = px.line(df, x='time', y='value')

# 获取原始刻度值
tick_vals = fig.layout.xaxis.tickvals

# 使用lambda函数格式化刻度文本
format_func = lambda x: pd.to_datetime(x).strftime("%-I%p").lower().replace('m', '')
tick_text = list(map(format_func, tick_vals))

# 更新X轴设置
fig.update_xaxes(tickmode='array', tickvals=tick_vals, ticktext=tick_text)

fig.show()

代码说明:

  • %-I:输出去掉前导零的12小时制小时数(如12、3、6)
  • %p:输出AM/PM标识,转小写后变成am/pm
  • .replace('m', ''):去掉末尾的m,得到a/p
  • 通过tickmode='array'手动绑定刻度值和自定义文本,确保显示样式符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:15:41