为什么 Bokeh 的情节不随情节选择而改变?

2024-01-08

努力去理解为什么这个散景视觉效果不允许我更改绘图并查看预测数据。出现绘图和选择(下拉式)菜单,但我无法更改菜单中项目的绘图。

通过 Anaconda 运行 Bokeh 1.2.0。该代码已在 Jupyter 内部和外部运行。运行代码时不会显示任何错误。我浏览了一些与同一问题相关的 SO 帖子,但我无法成功应用相同的解决方案。

我不确定如何从中创建一个玩具问题,因此除了下面的代码示例之外,完整的代码(包括回归代码和相应的数据)可以在我的 github 上找到here https://github.com/alofgran/Drug-Price-Prediction (code: Regression&Plotting.ipynb, data: pred_data.csv, historical_data.csv, features_created.pkd.)

import pandas as pd
import datetime
from bokeh.io import curdoc, output_notebook, output_file
from bokeh.layouts import row, column
from bokeh.models import Select, DataRange1d, ColumnDataSource
from bokeh.plotting import figure

#Must be run from the command line
def get_historical_data(src_hist, drug_id):
    historical_data = src_hist.loc[src_hist['ndc'] == drug_id]
    historical_data.drop(['Unnamed: 0', 'date'], inplace = True, axis = 1)#.dropna()
    historical_data['date'] = pd.to_datetime(historical_data[['year', 'month', 'day']], infer_datetime_format=True)
    historical_data = historical_data.set_index(['date'])
    historical_data.sort_index(inplace = True)
    # csd_historical = ColumnDataSource(historical_data)
    return historical_data

def get_prediction_data(src_test, drug_id):
    #Assign the new date
    #Write a new dataframe with values for the new dates
    df_pred = src_test.loc[src_test['ndc'] == drug_id].copy()
    df_pred.loc[:, 'year'] = input_date.year
    df_pred.loc[:, 'month'] = input_date.month
    df_pred.loc[:, 'day'] = input_date.day
    df_pred.drop(['Unnamed: 0', 'date'], inplace = True, axis = 1)
    prediction = lin_model.predict(df_pred)
    prediction_data = pd.DataFrame({'drug_id': prediction[0][0], 'predictions': prediction[0][1], 'date': pd.to_datetime(df_pred[['year', 'month', 'day']], infer_datetime_format=True, errors = 'coerce')})
    prediction_data = prediction_data.set_index(['date'])
    prediction_data.sort_index(inplace = True)
    # csd_prediction = ColumnDataSource(prediction_data)
    return prediction_data

def make_plot(historical_data, prediction_data, title):
    #Historical Data
    plot = figure(plot_width=800, plot_height = 800, x_axis_type = 'datetime',
                  toolbar_location = 'below')
    plot.xaxis.axis_label = 'Time'
    plot.yaxis.axis_label = 'Price ($)'
    plot.axis.axis_label_text_font_style = 'bold'
    plot.x_range = DataRange1d(range_padding = 0.0)
    plot.grid.grid_line_alpha = 0.3
    plot.title.text = title
    plot.line(x = 'date', y='nadac_per_unit', source = historical_data, line_color = 'blue', ) #plot historical data
    plot.line(x = 'date', y='predictions', source = prediction_data, line_color = 'red') #plot prediction data (line from last date/price point to date, price point for input_date above)
    return plot

def update_plot(attrname, old, new):
    ver = vselect.value
    new_hist_source = get_historical_data(src_hist, ver) #calls the function above to get the data instead of handling it here on its own
    historical_data.data = ColumnDataSource.from_df(new_hist_source)
    # new_pred_source = get_prediction_data(src_pred, ver)
    # prediction_data.data = new_pred_source.data

#Import data source
src_hist = pd.read_csv('data/historical_data.csv')
src_pred = pd.read_csv('data/pred_data.csv')

#Prep for default view
#Initialize plot with ID number
ver = 781593600
#Set the prediction date
input_date = datetime.datetime(2020, 3, 31) #Make this selectable in future
#Select-menu options
menu_options = src_pred['ndc'].astype(str) #already contains unique values
#Create select (dropdown) menu
vselect = Select(value=str(ver), title='Drug ID', options=sorted((menu_options)))

#Prep datasets for plotting
historical_data = get_historical_data(src_hist, ver)
prediction_data = get_prediction_data(src_pred, ver)

#Create a new plot with the source data
plot = make_plot(historical_data, prediction_data, "Drug Prices")

#Update the plot every time 'vselect' is changed'
vselect.on_change('value', update_plot)
controls = row(vselect)

curdoc().add_root(row(plot, controls))

更新:错误:

1)Jupyter Notebook 中没有显示错误。

2) CLI 显示UserWarning: Pandas doesn't allow columns to be careated via a new attribute name,引用 `historical_data.data = ColumnDatasource.from_df(new_hist_source)。

最终,该图应该有一条线代表历史数据,另一条线或点代表来自 sklearn 的预测数据。它还具有一个下拉菜单,用于选择要绘制的每个项目(一次一个)。


Your update_plot是一个无操作,实际上不会对 Bokeh 模型状态进行任何更改,而这是更改 Bokeh 图所必需的。更改 Bokeh 模型状态意味着为 Bokeh 对象的属性分配新值。通常,要更新绘图,您需要计算一个新的数据字典,然后从中设置一个现有的 CDS:

source.data = new_data  # plain python dict

或者,如果您想从 DataFrame 更新:

source.data = ColumnDataSource.from_df(new_df)

顺便说一句,不要分配.data从一个 CDS 到另一个 CDS:

source.data = other_source.data  # BAD

相比之下,你的update_plot计算一些新数据,然后将其丢弃。请注意,从任何 Bokeh 回调中返回任何内容都没有任何目的。回调由 Bokeh 库代码调用,该代码不期望也不使用任何返回值。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Bokeh 的情节不随情节选择而改变? 的相关文章

  • 更新到 Django 1.8 - AttributeError: django.test.TestCase 没有属性 'cls_atomics'

    我将 Django 1 7 项目更新为 Django 1 8 现在运行测试时出现错误 它们是 Django 的子类 django test TestCase Traceback most recent call last File env
  • Python:返回 // 正则表达式之间的字符串[重复]

    这个问题在这里已经有答案了 我仍然不明白正则表达式 我阅读了文档 但是在我想出了正则表达式字符之后 那么如何使用它们呢 例如 我只想返回前两个斜杠之间的任何内容 en lemon peel n ca llimona n is 的输出应该是
  • Sklearn 随机 Logistic 回归给出错误“ValueError:类的数量必须大于 1”

    我发现了 sklearn Randomized Logistic 中的一个错误 由于我花了很长时间才解决它 所以我会将其发布在这里 以防其他人遇到同样的问题 发生的情况是 在格式完美的数据上 sklearn RandomizedLogist
  • sklearn 估计器管道的参数无效

    我正在实现 O Reilly 书中的一个示例 Python 机器学习简介 使用 Python 2 7 和 sklearn 0 16 我正在使用的代码 pipe make pipeline TfidfVectorizer LogisticRe
  • str.translate 与 str.replace - 何时使用哪一个?

    何时以及为什么使用前者而不是后者 反之亦然 目前尚不完全清楚为什么有些人使用前者以及为什么有些人使用后者 它们有不同的目的 translate只能用任意字符串替换单个字符 但一次调用可以执行多次替换 它的参数是一个特殊的表 它将单个字符映射
  • 来自 pandas 数据帧的烛台图,用日期替换索引

    此代码给出了带有移动平均线的烛台图 但 x 轴位于索引中 我需要 x 轴位于日期中 需要做什么改变 import numpy as np import pandas as pd import matplotlib pyplot as plt
  • 无法在 virtualenv 中安装 libxml2

    我有一个问题libxml2蟒蛇模块 我正在尝试将其安装在python3 虚拟环境使用以下命令 pip install libxml2 python3 但它显示以下错误 Collecting libxml2 python3 Using cac
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • 类型错误:此 COM 对象无法自动执行 makepy 过程 - 请为此对象手动运行 makepy

    这是什么错误 回溯错误 C Users DELL PycharmProjects MyNew venv Scripts python exe C Users DELL PycharmProjects MyNew agaaaaain py T
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • 如何同时接受int和float类型的输入?

    我正在制作一个货币转换器 如何让 python 同时接受整数和浮点数 我就是这样做的 def aud brl amount From to ER 0 42108 if amount int if From strip aud and to
  • Pandas 多索引数据框中组之间的计算

    假设我生成一个多索引数据框如下 arrays np array bar bar baz baz foo foo qux qux np array one two one two one two one two df pd DataFrame
  • 如何将字符串转换为浮点数? [复制]

    这个问题在这里已经有答案了 我需要转换变量 pi string 3 1415926 变成一个浮子 这是我正在处理的事情 你的线路应该是pi float float pi string float pi string 是一个浮点值 你不能给它
  • 没有名为“PIL”的模块

    当我尝试时遇到错误 from PIL import Image ImageFilter 在 Python 文件中我收到一条错误消息ModuleNotFoundError No module named PIL 到目前为止 我已经尝试卸载 重
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 具有定制损失函数的随机森林

    我是机器学习领域的初学者 对于一个项目 我必须在随机森林分类中使用自定义损失函数 到目前为止我一直使用 scikit 通过 scikit 实现这一点的建议会更有帮助 损失函数 分类树中的基尼杂质和熵 在 scikit 的 tree pyx
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • tkinter - 检查文本小部件是否为空

    操作系统 Windows 8 1 Python 3 5 在 Tkinter 中 我发现了很多代码来验证输入框是否为空 但是当我尝试对文本小部件应用相同的方法时 它不起作用 看起来文本小部件有一个 n 字符 这可能就是问题所在 知道如何进行此

随机推荐

  • 如何将整个脚本放入循环中?

    我在编码方面没有任何经验 但我把我的野心用 python 编写了一些游戏代码 一切都很完美 D 但我有一个问题 我不知道如何无限重复代码 我在网上查了一下 但不太明白 我将在这里展示部分代码 也许有人可以解释我如何将所有代码放入 重复 中
  • C# 用户不活动的时间有多久

    一些背景 我正在编写一个具有多种表单等的应用程序 用户必须登录才能使用大部分功能 到目前为止效果很好 然而 现在 客户端请求用户在一定时间的不活动时间后注销 问题是用户仍然可以在计算机上处 于活动状态 只是不能在我的应用程序中处于活动状态
  • 具有相等填充的线性布局中的子项

    我目前正在设计一个带有 5 个按钮的 ButtonBar 它们都是 ImageButton 但目前只有 3 个 这是我的第一个 Android 项目 所以我一边做一边学习 我试图平均分配每个按钮的权重 而不缩放它们 具有相等的填充而不是相等
  • 在重新启动时保留应用程序状态

    我一直在尝试通过序列化我的主应用程序来保留 iPhone 应用程序的状态UITabBarController using NSKeyedArchiver archiveRootObject toFile 但我遇到了困难 首先我遇到了一个问题
  • 在 NetBeans 上使用 Armadillo 库编译 C++

    我将编译包含犰狳库的 C 程序 通过命令行使用以下命令可以解决此问题 g arm cpp o example O1 larmadillo 但是 当我将 O1 larmadillo 添加到 NetBeans 项目的编译选项时 出现了大量错误
  • 将 csv 导入到 iPhone 的 coredata sqlite

    如何将 csv 导入到 sqlite iPhone 的核心数据 我尝试过使用 SQLite 管理器 但它将 csv 导入到新表中 我还需要导入一些日期 那么如何将数据导入到我的sqlite数据库中呢 我有 3 个具有不同属性的实体 并且在
  • 为什么 a++++b 不起作用?

    int main int a 5 b 2 printf d a b return 0 此代码给出以下错误 错误 需要左值作为增量操作数 但如果我在整个过程中添加空格a and b 然后就可以正常工作了 int main int a 5 b
  • Android - 启动时启动服务

    从我在 Stack Exchange 和其他地方看到的一切来看 我已经正确设置了所有内容 以便在 Android 操作系统启动时启动 IntentService 不幸的是它没有在启动时启动 并且我没有收到任何错误 也许专家可以帮忙 显现
  • 通过 SVD 从基本矩阵中提取翻译的正确方法

    我校准了相机并找到了内部参数 K 我还计算了基本矩阵 F 现在 E K T F K 到目前为止 一切都很好 现在我们将基本矩阵 E 传递给 SVD 以使用分解值 U W V 来提取旋转和平移 essentialMatrix K Transp
  • 是否可以获得正在运行的进程及其符号表的核心转储?

    是否可以获取 gdb 或使用其他一些工具来创建正在运行的进程及其符号表的核心转储 如果有一种方法可以在不终止进程的情况下执行此操作 那就太好了 如果可能的话 您会使用什么命令 我正在尝试在 Linux 机器上执行此操作 Or run gco
  • WPF 列表框包装

    我有一个列表框 在其中使用 ListBox ItemsPanel WrapPanel
  • solr 建议者未返回任何结果

    我已经按照 solr wiki 文章的建议几乎到了这里 http wiki apache org solr Suggester http wiki apache org solr Suggester 我的 solrconfig xml 中有
  • 为什么 static char* 需要常量初始化,而 static char** 不需要

    有人可以解释一下为什么这段代码 main c include
  • LDIF 文件错误?无效的格式?

    我目前正在使用 UNIX 服务器上的 LDAP 我现在的主要目的是通过命令行通过 Ldapmodify 修改目录中的两个条目 这command如下 ldapmodify a D cn ldap dc cs dc ttu dc edu w p
  • 为什么 EF 6 教程使用异步调用?

    最新的 EF 教程介绍了如何将 EF 6 与 MVC 5 结合使用 似乎倾向于使用对数据库的异步调用 例如 Department department await db Departments FindAsync id 这是新标准 最佳实践
  • F# 类型提供程序和持续集成

    F 类型提供程序的类型定义通常需要常量表达式 例如对于 SQL 类型提供程序 type dbSchema SqlDataConnection lt Data Source MySqlServer Initial Catalog MyData
  • https://www.facebook.com/app_scoped_user_id/ {app_scoped_id} 重定向到 Facebook 主页 [重复]

    这个问题在这里已经有答案了 我正在使用图形 APIv2 5获取应用程序范围内的用户 ID 最近 我无法使用以下方式访问用户个人资料https www facebook com app scoped user id https www fac
  • Qt 自定义模型需要做什么才能启用 drop?

    我正在尝试在我连接的自定义模型上启用拖放功能QTreeView 我做了以下事情 确保在上启用了acceptDropsQTreeView 在我的自定义模型上实现supportedDropActions to return Qt CopyAct
  • MACOSX下jenkins用户的密码是多少?

    我正在尝试使用 TestFlight Jenkings GitHub Sonar 为 iOS iPhone 和 iPad 创建 CI 我下载了 macosx jenkings 包 向导 看来它为我的 mac 创建了一个用户 它的密码是什么
  • 为什么 Bokeh 的情节不随情节选择而改变?

    努力去理解为什么这个散景视觉效果不允许我更改绘图并查看预测数据 出现绘图和选择 下拉式 菜单 但我无法更改菜单中项目的绘图 通过 Anaconda 运行 Bokeh 1 2 0 该代码已在 Jupyter 内部和外部运行 运行代码时不会显示