標題真的說明了一切,我有一個帶有日期時間索引的資料框圖,每 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 的值不會更改周期數,只會將它們移動一點點。檔案在每個 y 軸刻度之間以毫秒為單位呼叫“M”。如果我在字串中使用 M,則熱圖認為我在談論幾個月并且我得到一個很長的 y 軸。
請幫我讓它每行有 1 個刻度,這真的不應該很難,不需要計算任何東西,只需要顯示索引。
uj5u.com熱心網友回復:
模擬了一個我認為與您的結構相匹配的資料框。包含了四個不同的引數
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",
}
)

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/347850.html
上一篇:datetime.strptime基于正則運算式模式檢查
下一篇:如何更改熊貓資料框中的時間格式
