我正在使用plotlyexpress时间轴函数绘制甘特图。我在日期字段的悬停文本呈现方面遇到问题。
plotly version: 4.5.4
Run Code Online (Sandbox Code Playgroud)
此处给出的原始示例https://plotly.com/python/gantt/,“完成”字段以正确的格式呈现为%Y-%m-%d。
plotly version: 4.5.4
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码自定义悬停文本字段。
import plotly.express as px
import pandas as pd
df = pd.DataFrame([
dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex")
])
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
fig.show()
Run Code Online (Sandbox Code Playgroud)
现在,显示的FinishStart字段是和的差值(Finish以毫秒为单位)。在上面的示例中,“完成”值显示为5011200000。
Finish我需要在悬停文本中显示原始值。在这种情况下2009-02-28。
我只能通过在数据框中创建 Finish 列的副本并将其用于悬停文本来解决此问题。
有没有办法在不重复的情况下获得正确的列渲染?
您可以使用 更改悬停工具提示中显示的值的格式hovertemplate,请参阅 Plotly 网站上的此示例以及 Plotly文档。
我根据您的代码在下面提供了一个示例,其中开始日期和结束日期均采用%Y-%m-%d格式。请注意,x_start和x_end对应于Plotly 图形字典中的base和键。x
import plotly.express as px
import pandas as pd
df = pd.DataFrame([
dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"),
dict(Task="Job B", Start='2009-03-01', Finish='2009-04-30', Resource="Anna")
])
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_traces(hovertemplate="Start: %{base|%Y-%m-%d}<br>"
"End: %{x|%Y-%m-%d}<br>"
"Task: %{y}")
fig.show()
Run Code Online (Sandbox Code Playgroud)