Отобразить данные json (plot.ly) из притока - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь получить график моих измерений притока. Для отображения графики я использую plot.ly и python.Я начал в python с sql-запроса для получения моих данных json от localhost: 8086, но он не работает.Я попробовал кое-что, я посылаю вам мой маленький кусочек кода:

import plotly 
import plotly.plotly as py
import numpy as np
import plotly.graph_objs as go
import plotly.offline as ply
import pandas as pd
from plotly.tools import FigureFactory as FF

if __name__ == "__main__":
    df = pd.read_json('http://localhost:8086/query?q=SELECT%20%22I%22%20FROM%20%22michelin%22.%22autogen%22.%22mqtt_consumer%22%20WHERE%20time%20%3E%20now()%20-%202d%20AND%20%22topic%22=%27PI1%27')
    print(df['results'])
    #df = [go.Scatter(x=df['time'], y=df['mqtt_consumer.mean_I'])]
    ply.plot(df, filename = 'time-series-simple')

Ссылка с запросом показывает мне это:

enter image description here

Я бы хотел временной ряд со значением «I» как функцией времени.Если кто-нибудь может мне помочь, спасибо за ваш отзыв

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Чтобы построить данные с помощью Plot.ly, сначала необходимо создать трассировку, в которой вы определяете данные оси X, Y.

import plotly.plotly as py
import plotly.graph_objs as go

trace = go.Scatter(
x = ("Your X data, Must be a numpy array"),
y = ("Your Y data, Must be a numpy array"),
mode = 'markers'
)

data = [trace]

Тогда вы можете просто,

py.plot(data, filename='basic-line')
0 голосов
/ 28 мая 2019

Вы должны раскрутить все ключи перед началом печати. Данные внутри объекта json, которые вы хотите отобразить, находятся на самом внутреннем вложенном уровне. Вы должны достичь этого. Попробуйте это

dfff = pd.DataFrame(df["results"][0]["series"][0]["values"]).T
#dfff.plot()

В частности, если вы хотите построить график, используя plotly:

import plotly.plotly as py
import pandas as pd
import numpy as np

dfff = pd.DataFrame(df["results"][0]["series"][0]["values"]).T


dfff.columns = ["timestamp","value"]

py.iplot([{
    'x': dfff.timestamp,
    'y': dfff["value"],
    'name': "value"
}  ], filename='yourfilename')
...