我正在创建一些科学数据的可视化,我决定使用散景(顺便说一下,是否有任何替代方案,可以创建控件和绘图而不会像散景一样痛苦?)
我写了以下代码:
Select(value="Microtubule-associated protein 4",
title="Protein name:", options=df['Protein Name'].values.tolist()[1:100],
width=400)) # Sorting nexin-3
它工作正常,但是如果我尝试将整个列表作为选项参数传递,则会因错误而崩溃:
File "/home/my/.local/lib/python3.5/site-packages/bokeh/core/properties.py", line 1205, in validate
raise ValueError("expected an element of %s, got seq with invalid items %r" % (self, invalid))
ValueError: expected an element of List(Either(String, Tuple(String, String))), got seq with invalid items [nan, nan, nan, nan, nan, nan, nan]
print(df['Protein Name'].values.tolist() ) works fine
答案 0 :(得分:2)
该消息不是Bokeh崩溃的情况。该消息是验证错误,告诉您传递的是无效数据。该消息相当直接地说:
expected an element of List(Either(String, Tuple(String, String)))
要为options
窗口小部件配置Select
属性,您必须传递:
['foo', 'bar', 'baz']
您正尝试使用毫无意义的内容配置选项:
got seq with invalid items [nan, nan, nan, nan, nan, nan, nan]
也就是说,您尝试传递的任何内容列表都包含NaN
值。在为Select
小部件设置选项的上下文中,这不会也不会有意义。
如果您不同意此评估,则必须提供更多信息,例如: df['Protein Name'].values.tolist()
作为旁注:大多数python库只会在传递错误参数时随机出现异常,Bokeh有点独特,因为它提供了这样的特定,详细和可操作的验证错误。人们非常努力地为您免费提供开源软件。也许在贬低这项工作之前,你首先可能需要一些时间来确保它实际上不是用户错误的情况。
答案 1 :(得分:0)
抱歉,我的错,列表中有错误的数据。