Python Plotly Heatmap Datetime показывает только часть - PullRequest
0 голосов
/ 26 июня 2018

Я определяю ряд даты и времени тепловой карты с двоичным значением 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 голосов
/ 26 июня 2018

Существует довольно много причин, по которым тепловая карта может пойти не так.

позвольте мне указать те, которые применимы для вашего случая!

  1. Z-Axis элементызадается как строка, но нам нужно передать ее как число, поэтому вы все неправильно получаете цветовую шкалу.Вы можете сделать что-то вроде этого, чтобы получить все числа.

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

Это даст нам список чисел вместо строк

Элементы 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')
...