Plot.ly API 在创建图形时随机抛出 JSON 解码错误

Posted

技术标签:

【中文标题】Plot.ly API 在创建图形时随机抛出 JSON 解码错误【英文标题】:Plot.ly API throws randomly JSON decoding error while creating graph 【发布时间】:2013-07-08 08:40:10 【问题描述】:

我在使用 Python 2.7 和 Plot.ly API 时遇到以下问题,我不确定发生了什么以及问题出在哪里。在我写信给作者之前,我将尝试在这里提问。我有一个脚本可以扫描特定网站、它们的链接并分析内容(单词、计数等)。结果由 Plotly 绘制为条形图。一切正常,脚本每 30 分钟运行一次。但是每天都会发生几次,通过API处理数据上传的方法,比如response = py.plot([data]),说"ValueError: No JSON object could be decoded"data不是空的,计数工作正常)。我不明白的是:

1) 几分钟前它正在使用相同的脚本代码

2) 我在变量 data 中放入什么数据并不重要(比如 x 和 y 的简单数字)

3) 出现上述错误后,发送并发布数据,但描述符-布局(轴设置、标题、图形大小)没有,因为它们是在下一步中单独设置的,脚本在创建响应的位置(我可以将它们合并在一起,但错误仍然出现,我想知道原因)

4) 当我使用如下基本示例创建空的 .py 文件时:

import plotly
py = plotly.plotly(username='someUname', key='someApiKey')
x0 = ['a', 'b', 'c'];
y0 = [20, 14, 23];
data = 'x': x0, 'y': y0,'type': 'bar'
response = py.plot([data])
url = response['url']
filename = response['filename']

那么结果是一样的,准确的说是没有JSON对象可以解码。

Traceback (most recent call last):
  File "<module1>", line 10, in <module>
  File "C:\Python27\lib\site-packages\plotly-0.4-py2.7.egg\plotly\plotly.py", line 69, in plot
    r = self.__makecall(args, un, key, origin, kwargs)
  File "C:\Python27\lib\site-packages\plotly-0.4-py2.7.egg\plotly\plotly.py", line 142, in __makecall
    r = json.loads(r.text)
  File "C:\Python27\lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded 

数据已发布,但我无法设置布局。在字数统计脚本工作正常的时候,这段小示例代码也能正常工作。

有人有同样的经历吗?好吧,我不是编码专家,但似乎问题可能出在我的代码之外。或者,也许我错过了一些东西,无论如何我无法调试/理解原因。

感谢您的提示

【问题讨论】:

【参考方案1】:

克里斯在这里,来自 Plotly。感谢您报告问题。你绝对没有做错任何事!出现此错误是由于从 plotly 到您的桌面的一些传输问题。 API 需要来自 plotly 服务器的 JSON 格式的字符串,但收到了不同的内容。我会进一步调查。如果再次发生,一定要给我发电子邮件! --chris[at]plot.ly

【讨论】:

嗨,克里斯,考虑到您的答案可能会在这里待一段时间,您可能想提供更多关于提交错误报告的适当地点的信息。

以上是关于Plot.ly API 在创建图形时随机抛出 JSON 解码错误的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:将多个图形绘制为子图

在 PyQt5 GUI 中使用 Dash (plot.ly)

将绘图导出到 Plot.ly 时出错

Pandas GroupBy 对象不是 Plot.ly 的“可序列化”对象

plot.ly(dash_core_components) 滑块颜色变化

使用 R 和 plot.ly - 如何编写脚本将输出保存为网页