我正在处理的项目有问题,所以我有一个问题。
当前内容由传感器以表格格式绘制。但是几天前,当我在做某事时,我不知道如何解决它,所以我寻求帮助。
import plotly.plotly as py
import plotly.figure_factory as ff
from bluepy import sensortag
import sys
import time
import datetime
import numpy as np
py.sign_in("smrlswja9963","94b4enXKYqyOu4iuPDGG")
time.sleep(1.0)
tag = sensortag.SensorTag('24:71:89:CC:53:00')
tag.IRtemperature.enable()
tag.humidity.enable()
stream1=py.Stream('liz9v2c0or')
stream1.open()
i=0
while True:
now = datetime.datetime.now()
dateTime = now.strftime("%Y-%m-%d %H:%M:%S")
A = tag.IRtemperature.read()
B = tag.humidity.read()
tempt=A[0]
humty=B[0]
stream1.write({dateTime,tempt,humty})
i+=1
tag.waitForNotifications(3.0)
table = go.Table(
header=dict(values=["dateTime","tempt","humty"]),
cells=dict(values=[[dateTime],[tempt],[humty]]),
stream = dict(token='liz9v2c0or',))
data=[table]
py.iplot(table, filename="latex table")
执行以下代码后,发生以下错误。
Traceback (most recent call last):
File "/home/pi/do it.py", line 27, in <module>
stream1.write({dateTime,tempt,humty})
File "/usr/local/lib/python2.7/dist-packages/plotly/plotly/plotly.py", line 632, in write
stream_object.update(trace)
TypeError: cannot convert dictionary update sequence element #0 to a sequence
在这种情况下,当我从流中接收数据时,但是当我绘制表格时,使用plolty绘制图形的代码没有问题。
我怎么在这里画图? 我真的很好奇请让我知道。
答案 0 :(得分:1)
此异常意味着您正在尝试从可迭代对象构造一个字典,并且可迭代对象的第一个元素不是序列。正如the docs所解释的,您可以通过两种方式构建字典:
因此,如果您尝试从一组数字构造它:
>>> dict({1, 2, 3})
TypeError: cannot convert dictionary update sequence element #0 to a sequence
…试图将第一个元素用作键值对(即2个值的序列),但是无法将数字1
解释为键值对,因此它引发了TypeError
。
与此同时,我对Plotly流媒体一无所知,但this page上的内容是什么,但是这段代码显然是错误的:
stream1.write({dateTime,tempt,humty})
我无法想象您为什么要串流播集。
此外,所有示例都包含一个字典或一个字符串,该字符串是字典的JSON编码。
因此,很显然,该API希望您将其传递给dict或可以传递给dict构造函数的东西。但是,您正在传递它。因此,它将设置集合传递给dict构造函数,并获取此异常。
由于我不知道您实际上要在这里做什么,所以我不知道您应该在这里发送什么。但是您绝对应该通过一个命令。
即使您已解决此问题,也可以根据sign_in
调用,看起来您正在使用Plotly Cloud。但是,正如同一页所述:
Plotly Cloud不再支持流式传输。
因此,如果您尝试在Plotly Cloud中使用流式传输,那么即使您修复了合理的代码,也可能仍然会失败,只是来自Plotly而不是TypeError
的错误关于胡说八道。