【问题标题】:Display data json (plot.ly) from influxdb显示来自 influxdb 的数据 json (plot.ly)
【发布时间】:2019-05-28 09:27:11
【问题描述】:

我正在尝试获取我的 influxdb 测量值的图表。要显示图形,我使用 plot.ly 和 python。我开始在 python 中使用 sql 请求从 localhost:8086 获取我的 json 数据,但它不起作用。我已经尝试了一些东西,我正在向您发送我的一小段代码:

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')

请求的链接向我展示了这一点:

我想要一个时间序列,其值“I”是时间的函数。 如果有人可以帮助我,谢谢您的反馈

【问题讨论】:

    标签: python json matplotlib plotly influxdb


    【解决方案1】:

    要通过 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')
    

    【讨论】:

      【解决方案2】:

      您必须在绘图前展开所有键。您要绘制的 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')
      

      【讨论】:

      • 好的,谢谢,我打印了,所以我把我的测量结果拿回来了。但是,要在 html 页面上显示我的图表,它不起作用,它会返回给我: raise exceptions.PlotlyError("The figure_or_data positional" Plotly_utils.exceptions.PlotlyError: The figure_or_data positional argument must be @ 987654326@-like、list-like 或 plotly.graph_objs.Figure 的一个实例我使用以下命令创建文件:ply.plot(dfff, filename = "time-series-simple") with dfff my data跨度>
      • 我想绘制您需要明确提供yxvalues 的数据框值。我做了修改,试试看。
      • 抱歉回复时间太长了非常感谢您的帮助,感谢您的帮助,问题解决了
      猜你喜欢
      • 1970-01-01
      • 2022-01-13
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 2018-10-24
      • 2018-05-09
      相关资源
      最近更新 更多