【问题标题】:How to chose tick frequency on plotly.graph_objects.Heatmap date axis?如何在 plotly.graph_objects.Heatmap 日期轴上选择刻度频率?
【发布时间】:2021-11-02 10:35:52
【问题描述】:

标题确实说明了一切,我有一个数据帧图,它有一个日期时间索引,每 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 个刻度,它真的不应该很难,不需要计算任何东西,只需要显示的索引。

【问题讨论】:

  • 样本数据框。 index 是我猜的日期时间,但不知道。 columns 是一个字符串列表。您的代码示例看起来有问题。 fig 被分配然后你操纵pte_fig_new

标签: python datetime plotly plotly-python


【解决方案1】:

模拟了一个我认为与您的结构相匹配的数据框。已包含四个不同的参数

  1. tick0 设置为索引中的第一次
  2. dtick 计算索引中第一次和第二次之间的毫秒数
  3. reversed 似乎您的代码试图这样做
  4. 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",
    }
)

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2020-10-01
  • 2020-04-11
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2021-03-05
相关资源
最近更新 更多