【问题标题】:How to get actual data points from a graph using python?如何使用python从图表中获取实际数据点?
【发布时间】:2018-06-25 07:35:07
【问题描述】:

我在 python 中使用fbprophet 模块制作了股票数据图表。我的图表如下所示:

我使用的代码是这样的:

model = Prophet()
model.fit(df)
future = model.make_future_dataframe(periods=365)  # forecasting for 1 year from now.
forecast = model.predict(future)

''' Plotting the forecast '''
figure = model.plot(forecast)
plt.plot = figure

figure.savefig('forecasting for 1 year.svg')

根据上面的代码,我制作了该图。然后我使用mpld3 模块从中提取数据点

import mpld3
# print(mpld3.fig_to_dict(figure))
print(mpld3.fig_to_dict(figure)['data'])

它给了我这样的输出:

{'data01': [[734094.0, 3.3773930153824794], [734095.0, 3.379438304627263],  ........ 'data03': [[0.0, 0.0]]}

但是问题是从上面的输出我得到的y值是正确的,但不是x值。实际的x值是这样的:

"x": [
        "2010-11-18 00:00:00",
        "2010-11-19 00:00:00",
        "2010-11-22 00:00:00" ... ]

但我得到的 x 值是这样的:734094.0 , 734095.0 ..

那么如何从图中获取实际数据(数据点 x 和 y 值)??

还有其他方法吗?我想从图形中提取数据点,然后将它们从烧瓶 api 发送到 UI(角度 4)

提前致谢!

【问题讨论】:

    标签: python python-3.x graph mpld3


    【解决方案1】:

    734094 / 365.25 = 2009.8398。这是一个非常具有启发性的数字,从您的示例来看,我假设是 2010 年 11 月 18 日。看起来您的日期信息表示为浮点数,其中 1.0 的差对应于一天:并且值 0.0 的参考日期是公元 1 月 1 日。

    您可以尝试编写一个从 01-01-1 开始计数的函数,或者您可以在库中找到一个。或者,您可以查看您知道的日期的转换值,然后从那里开始工作。

    【讨论】:

    • 我没听懂。如果 a 有一个值 734094.0 我如何从中提取正确的日期。并且日期不是固定日期可能会根据数据而更改..
    • 好的,我进一步查看了您的导入语句。 mpld3 似乎是 Matplotlib 的一个分支,旨在合并到网页中。它不再被积极维护。如果 mpld3 确实是 Matplotlib 的包装器,那么您会对 Matplotlib 存储日期信息的方式感兴趣。你会想阅读matplotlib.org/api/dates_api.html。 (续...)
    • 正如我通过算术预测的那样,我向您展示了:“Matplotlib 使用浮点数表示日期,指定自 0001-01-01 UTC 以来的天数加上 1。”此外,我预测:“有许多辅助函数可以在 datetime 对象和 Matplotlib 日期之间进行转换...... num2date():将 Matplotlib 日期转换为 datetime 对象。”
    • 非常感谢您的回复,让我检查一下,然后我会回复您!
    • 非常感谢!有效!您在 cmets 中给我的信息非常有用,谢谢。 num2date 函数帮助了我! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多