Python Plotly Heatmap Datetime仅显示部分

时间:2018-06-25 23:17:47

标签: python python-3.x datetime plotly heatmap

我正在定义一个带有二进制z值的热图日期时间序列。

go.Heatmap的输出似乎是正确的...但是,该图仅显示了其中很小的一部分。

任何人都可以帮助调试吗?我没有为布局组件设置任何限制(也没有设置任何限制)。

{'colorscale': 'Viridis',
 'type': 'heatmap',
 'x': [datetime.datetime(2018, 6, 4, 12, 0, 5),
       datetime.datetime(2018, 6, 4, 12, 0, 10),
       datetime.datetime(2018, 6, 4, 12, 0, 15),
       datetime.datetime(2018, 6, 4, 12, 0, 20),
       .....
       all the way to index 719],
 'y': ['MotionSensor'],
 'z': ['1',
       '1',
       '1',
       '0',
       '0',
       '0',
       '0',
       '0',
       .....
       all the way to index 719]}

sample image

1 个答案:

答案 0 :(得分:1)

热图有很多错误的方法。

让我指出适用于您的情况的那些!

  1. Z-Axis元素以字符串形式给出,但是我们需要将其作为数字传递,这就是为什么您将色阶全部错误的原因。您可以执行以下操作来获取所有号码。

    arr = ['1', '1', '1', '0']
    [int(i) for i in arr]
    

这将为我们提供数字列表,而不是字符串

  1. Z-axis元素应为列表列表(Ex: [[1], [2], [3]])),其中第一个列表对应于每个Y-Axis的值及其对应的X-Axis值。像这样:

    Y: 1, X: [1, 2, 3], Z: [1234,1234566,56456]
    Y: 2, X: [1, 2, 3], Z: [5345,2346,7654]
    

    因此,可以将其设置为热图属性,如下所示:

    {x: [1, 2, 3],
    y: [1,2],
    z: [ [1234,1234566,56456], [5345,2346,7654] ] }
    

尝试这些更改,让我知道布局问题是否仍然存在。

这里有一些工作示例代码可供参考

import plotly
import plotly.plotly  as py
from plotly.grid_objs import Grid, Column
import numpy as np
import pandas as pd
import plotly.offline as py_offline
import plotly.graph_objs as go
import datetime
py_offline.init_notebook_mode()

trace = go.Heatmap(z=
[[int(i) for i in ['1',
       '1',
       '1',
       '0']]],
                   x= [datetime.datetime(2018, 6, 4, 12, 0, 5),
       datetime.datetime(2018, 6, 4, 12, 0, 10),
       datetime.datetime(2018, 6, 4, 12, 0, 15),
       datetime.datetime(2018, 6, 4, 12, 0, 20)],
                   y=['MotionSensor'])
data=[trace]
py_offline.iplot(data, filename='labelled-heatmap')