如何在 Plotly Express 的日期时间显示 'hour precision'?
How to show 'hour precision' on datetimes in Plotly express?
我在所有博客上查找答案都是徒劳的...我只是在寻找一种方法来在我的图表上显示具有小时精度的日期时间。这是我的代码生成的示例:
我的 'Start Date' & 'End Date' 通常采用以下格式 'mm-dd-yyyy H-M-S' 但是在我放大之前它不会显示小时精度
我知道这个问题听起来很愚蠢,但如果你能指出正确的方向,我将不胜感激
编辑:
设置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, x_start="Start", x_end="End", y="Task", 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>")
我在所有博客上查找答案都是徒劳的...我只是在寻找一种方法来在我的图表上显示具有小时精度的日期时间。这是我的代码生成的示例:
我的 'Start Date' & 'End Date' 通常采用以下格式 'mm-dd-yyyy H-M-S' 但是在我放大之前它不会显示小时精度
我知道这个问题听起来很愚蠢,但如果你能指出正确的方向,我将不胜感激
编辑:
设置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, x_start="Start", x_end="End", y="Task", 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>")