如何在 Plotly express 中的日期时间显示“小时精度”? 更改只是悬停模板而不是整体轴

问题描述

我在所有博客上都徒劳地查找了答案......我只是在寻找一种方法来在我的图表上以小时精度显示日期时间。这是我的代码生成的示例:

我的“开始日期”和“结束日期”通常采用以下格式“mm-dd-yyyy H-M-S”,但在我放大之前它不会显示小时精度

enter image description here

我知道这个问题听起来很愚蠢,但如果你能指出我正确的方向,我将不胜感激

编辑:

enter image description here

解决方法

这是设置xaxis_tickformat的情况。如果没有此示例,下面的行为将与您描述的一样,没有小时精度

import pandas as pd
import numpy as np
import plotly.express as px

# for hour slots randonly assign a task
df = pd.DataFrame({"Start": pd.date_range("1-jan-2021",periods=10**3,freq="4H")}).assign(
    End=lambda d: d.Start + pd.Timedelta(hours=1),Task=np.random.choice([f"Task {i}" for i in range(2)],10**3,p=(0.8,0.2)),)

# compress consequetive rows
df = df.groupby(df.Task.ne(df.Task.shift()).cumsum()).agg(
    {"Start": "min","End": "max","Task": "first"})

fig = px.timeline(df,x_start="Start",x_end="End",y="Task",color="Task")

fig.update_layout(xaxis_tickformat = '%Y-%m-%d %H:%M')

更改只是悬停模板而不是整体轴

fig = px.timeline(df,color="Task")
print(fig.data[0].hovertemplate) # just FYI so can see what default template is
fig.update_traces(hovertemplate="Task=%{y}<br>Start=%{base|%Y-%m-%d %H:%M}<br>End=%{x|%Y-%m-%d %H:%M}<extra></extra>")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...