Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么Bokeh的情节不随情节选择而改变?_Python 3.x_Pandas_Plot_Scikit Learn_Bokeh - Fatal编程技术网

Python 3.x 为什么Bokeh的情节不随情节选择而改变?

Python 3.x 为什么Bokeh的情节不随情节选择而改变?,python-3.x,pandas,plot,scikit-learn,bokeh,Python 3.x,Pandas,Plot,Scikit Learn,Bokeh,我很难理解为什么这个博克视觉系统不允许我改变绘图和查看预测数据。此时会出现“打印并选择”下拉菜单,但我无法更改菜单中项目的打印 通过Anaconda运行Bokeh 1.2.0。代码已经在Jupyter内部和外部运行。运行代码时不显示任何错误。我已经浏览了一些关于同一问题的SO帖子,但是我没有能够成功地应用相同的解决方案 我不知道如何解决这个问题,所以除了下面的代码示例之外,还可以在我的github代码中找到完整的代码,包括回归代码和相应的数据:regression&Plotting.ipynb,

我很难理解为什么这个博克视觉系统不允许我改变绘图和查看预测数据。此时会出现“打印并选择”下拉菜单,但我无法更改菜单中项目的打印

通过Anaconda运行Bokeh 1.2.0。代码已经在Jupyter内部和外部运行。运行代码时不显示任何错误。我已经浏览了一些关于同一问题的SO帖子,但是我没有能够成功地应用相同的解决方案

我不知道如何解决这个问题,所以除了下面的代码示例之外,还可以在我的github代码中找到完整的代码,包括回归代码和相应的数据:regression&Plotting.ipynb,data:pred_data.csv,historical_data.csv,features_created.pkd

更新:错误:

1 Jupyter笔记本中未显示任何错误

2 CLI显示一个用户警告:Pandas不允许通过新的属性名,引用'historical_data.data=ColumnDatasource.from_dfnew_hist_source'来替换列

最终,绘图应该有一条线表示历史数据,另一条线或点表示从sklearn导出的预测数据。它还有一个下拉菜单,可以选择每个项目一次绘制一个。

您的更新图是一个不可操作的图,实际上不会对Bokeh模型状态进行任何更改,这是更改Bokeh图所必需的。更改Bokeh模型状态意味着为Bokeh对象上的特性指定新值。通常,要更新绘图,您需要计算一个新的数据目录,然后从中设置一个现有的CD:

source.data = new_data  # plain python dict
或者,如果要从DataFame更新:

source.data = ColumnDataSource.from_df(new_df)
另外,不要将.data从一张CD分配给另一张CD:

source.data = other_source.data  # BAD
相比之下,更新图计算一些新数据,然后将其丢弃。请注意,从任何Bokeh回调返回任何内容都没有任何意义。回调由Bokeh库代码调用,它不期望或使用任何返回值

最后,我不认为最后的JS控制台错误是由BokehJS生成的

您的更新图是一个不可操作的图,实际上不会对Bokeh模型状态进行任何更改,这是更改Bokeh图所必需的。更改Bokeh模型状态意味着为Bokeh对象上的特性指定新值。通常,要更新绘图,您需要计算一个新的数据目录,然后从中设置一个现有的CD:

source.data = new_data  # plain python dict
或者,如果要从DataFame更新:

source.data = ColumnDataSource.from_df(new_df)
另外,不要将.data从一张CD分配给另一张CD:

source.data = other_source.data  # BAD
相比之下,更新图计算一些新数据,然后将其丢弃。请注意,从任何Bokeh回调返回任何内容都没有任何意义。回调由Bokeh库代码调用,它不期望或使用任何返回值


最后,我不认为最后的JS控制台错误是由BokehJS生成的

谢谢@bigreddot。我按照你的建议更新了代码。命令行生成AttributeError'ColumnDataSource'对象没有属性“copy”。我从get_historical_数据和get_prediction_数据函数中去掉了.copy方法,但仍然存在错误。将更改分配回保存数据的原始变量(即data=data.drop)是否符合复制条件?我还尝试将上述函数中的数据保留为dataframes,但随后出现错误,Pandas不允许通过新的属性名称创建列,但我相信你在另一位用户的帖子中提到,你不熟悉熊猫错误的含义……我认为最好在整个过程中尽可能将其作为CSD。from_df用于将数据帧调整为CD格式,因此你的get_historical_数据应该返回一个数据帧,而不是CD。只需完全删除行prediction_data=ColumnDataSourceprediction_data。这也是我的想法,因此也是我在第二条评论中采取行动的原因。不幸的是,我得到了同样的警告,我在上面的评论中错误地称之为“错误”。太好了,我已经在那里开始了讨论。希望您能在这里提出一个问题,这样就不会有悬而未决的项目问题。谢谢@bigreddot。我按照你的建议更新了代码。命令行生成AttributeError'ColumnDataSource'对象没有属性“copy”。我从get_historical_数据和get_prediction_数据函数中去掉了.copy方法,但仍然存在错误。将更改分配回保存数据的原始变量(即data=data.drop)是否符合复制条件?我还尝试将上述函数中的数据保留为dataframes,但随后出现错误,Pandas不允许通过新的属性名称创建列,但我相信你在另一位用户的帖子中提到,你不熟悉熊猫错误的含义……我认为如果可能的话,最好在整个过程中将其保留为CSD。from_df用于调整数据
帧转换为CD格式,因此get_historical_数据应返回数据帧,而不是CD。只需完全删除行prediction_data=ColumnDataSourceprediction_data。这也是我的想法,因此也是我在第二条评论中采取行动的原因。不幸的是,我得到了同样的警告,我在上面的评论中错误地称之为“错误”。太好了,我已经在那里开始了讨论。希望在这里有一个问题,这样就不会有一个悬而未决的项目问题。