如何在 plotly.graph_objects.Heatmap 日期轴上选择刻度频率?
How to chose tick frequency on plotly.graph_objects.Heatmap date axis?
标题确实说明了一切,我有一个数据帧图,其中有一个日期时间索引,每 15 分钟有 1 行,列的字符串列表和单元格中的二进制值:
fig = go.Figure(data=[
go.Heatmap(x=df.columns,
y=df.index,
z=df.values,
colorscale=[[0, 'rgb(248,105,107)'], [1, 'rgb(99,190,123)']],
xgap=1,
ygap=1,
# yperiod = f'{1000*60*15}', #1000 milliseconds / second, 60 seconds per minute, 15 minutes per row.
showscale=False)
])
fig['layout']['yaxis']['autorange'] = "reversed" # earliest date on top, latest date down below.
改变 yperiod 的值不会改变周期的数量,它只会移动一点点。文档要求 'M' 在每个 y 轴刻度之间以毫秒为单位。如果我在字符串中使用 M,热图认为我在谈论几个月,并且我得到一个很长的 y 轴。
请帮我让它每行有 1 个刻度,这真的不应该很难,不需要计算任何东西,只需要显示索引。
模拟了一个我认为与您的结构匹配的数据框。包含了四个不同的参数
tick0
设置为索引中的第一次
dtick
计算索引中第一次和第二次之间的毫秒数
reversed
看来您的代码正在尝试执行此操作
tickformat
只需要小时和分钟
import pandas as pd
import numpy as np
import plotly.graph_objects as go
S = 10
df = pd.DataFrame(
index=pd.date_range("1-nov-2021", periods=S, freq="15min"),
data=np.random.uniform(1, 100, [S, 5]),
columns=list("ABCDE"),
)
fig = go.Figure(
data=[
go.Heatmap(
x=df.columns,
y=df.index,
z=df.values,
colorscale=[[0, "rgb(248,105,107)"], [1, "rgb(99,190,123)"]],
xgap=1,
ygap=1,
# yperiod = f'{1000*60*15}', #1000 milliseconds / second, 60 seconds per minute, 15 minutes per row.
showscale=False,
)
]
)
fig.update_layout(
yaxis={
"tick0": df.index.min(),
"dtick": (df.index[1] - df.index[0]).total_seconds() * 1000,
"autorange": "reversed",
"tickformat": "%H:%M",
}
)
标题确实说明了一切,我有一个数据帧图,其中有一个日期时间索引,每 15 分钟有 1 行,列的字符串列表和单元格中的二进制值:
fig = go.Figure(data=[
go.Heatmap(x=df.columns,
y=df.index,
z=df.values,
colorscale=[[0, 'rgb(248,105,107)'], [1, 'rgb(99,190,123)']],
xgap=1,
ygap=1,
# yperiod = f'{1000*60*15}', #1000 milliseconds / second, 60 seconds per minute, 15 minutes per row.
showscale=False)
])
fig['layout']['yaxis']['autorange'] = "reversed" # earliest date on top, latest date down below.
改变 yperiod 的值不会改变周期的数量,它只会移动一点点。文档要求 'M' 在每个 y 轴刻度之间以毫秒为单位。如果我在字符串中使用 M,热图认为我在谈论几个月,并且我得到一个很长的 y 轴。
请帮我让它每行有 1 个刻度,这真的不应该很难,不需要计算任何东西,只需要显示索引。
模拟了一个我认为与您的结构匹配的数据框。包含了四个不同的参数
tick0
设置为索引中的第一次dtick
计算索引中第一次和第二次之间的毫秒数reversed
看来您的代码正在尝试执行此操作tickformat
只需要小时和分钟
import pandas as pd
import numpy as np
import plotly.graph_objects as go
S = 10
df = pd.DataFrame(
index=pd.date_range("1-nov-2021", periods=S, freq="15min"),
data=np.random.uniform(1, 100, [S, 5]),
columns=list("ABCDE"),
)
fig = go.Figure(
data=[
go.Heatmap(
x=df.columns,
y=df.index,
z=df.values,
colorscale=[[0, "rgb(248,105,107)"], [1, "rgb(99,190,123)"]],
xgap=1,
ygap=1,
# yperiod = f'{1000*60*15}', #1000 milliseconds / second, 60 seconds per minute, 15 minutes per row.
showscale=False,
)
]
)
fig.update_layout(
yaxis={
"tick0": df.index.min(),
"dtick": (df.index[1] - df.index[0]).total_seconds() * 1000,
"autorange": "reversed",
"tickformat": "%H:%M",
}
)