Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python Bokeh -使用两个同步的select小部件过滤表

Python Bokeh -使用两个同步的select小部件过滤表
EN

Stack Overflow用户
提问于 2020-05-26 07:42:16
回答 1查看 461关注 0票数 0

我想使用两个bokeh select小部件来筛选一个表,请参见下面的代码结构。我定义了两个小部件: userm和locations。首先,选择使用userm小部件的用户(应该更改表和' locations‘小部件),其次,选择具有位置小部件的位置(应该再次更改表)。

我的代码可以很好地根据用户过滤表,但不会根据位置选择更新位置小部件和表。我不确定是否有可能在同一个回调函数中实现所有的功能。有什么想法吗?谢谢!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Import libraries
from bokeh.io import output_notebook, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Select, DataTable, TableColumn
from bokeh.models.sources import ColumnDataSource, CDSView
from bokeh.models import CustomJS, Select
import pandas as pd

output_notebook()

#Create the dataframe
df = pd.DataFrame({'Index': ['9', '10', '11', '12', '13'],
        'Size': ['250', '150', '283', '433', '183'],
        'X': ['751', '673', '542', '762', '624'],
        'Y': ['458', '316', '287', '303', '297'],
        'User': ['u1', 'u1', 'u2', 'u2', 'u2'],
        'Location': ['A', 'B', 'C', 'C', 'D']
        })

#Create widgets
userm = Select(title = "Select user:", options=list(set(df['User'])), 
               value=list(set(df['User']))[0])
locations = Select(title="Select location:", options=list(set(df['Location'])), 
                   value=list(set(df['Location']))[0])

#Create data source
source=ColumnDataSource(data=dict(User=df['User'], Location=df['Location']))
filteredSource = ColumnDataSource(data=dict(User=[],Location=[]))

#Create data table
columns = [TableColumn(field="User",title="User"),
           TableColumn(field="Location",title="Location",sortable=True)]
data_table=DataTable(source=filteredSource,columns=columns, width=400 )
data_table_unfiltered=DataTable(source=source,columns=columns, width=400 )

callback = CustomJS(args=dict(source=source,
                              filteredSource=filteredSource,
                              data_table=data_table), code="""
    var data = source.data;
    var f = cb_obj.value;
    var df2 = filteredSource.data;
    df2['User']=[]
    df2['Location']=[]
    locations=[]


    for(i = 0; i < data['User'].length;i++){

    if(data['User'][i]==f){

        df2['User'].push(data['User'][i])
        df2['Location'].push(data['Location'][i])
    }

    }

    filteredSource.change.emit()
    data_table.change.emit()

""")

userm.js_on_change('value', callback)
show(widgetbox(userm, locations, data_table))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-26 08:36:50

可以在小部件之间共享单个CustomJS回调,但是不能使用cb_obj。您必须显式地传递小部件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
callback = CustomJS(args=dict(source=source,
                              filteredSource=filteredSource,
                              userm=userm, locations=locations),
                    code="""
    const data = source.data;
    const userm_value = userm.value;
    const locations_value = locations.value;
    const df2 = filteredSource.data;
    df2['User'] = [];
    df2['Location'] = [];

    for (let i = 0; i < data['User'].length; i++) {
        if (data['User'][i] === userm_value && data['Location'][i] === locations_value) {
            df2['User'].push(data['User'][i])
            df2['Location'].push(data['Location'][i])
        }
    }

    filteredSource.change.emit()
""")

userm.js_on_change('value', callback)
locations.js_on_change('value', callback)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62016965

复制
相关文章
python select 使用
import select import socket import sys import queue
用户5760343
2022/05/13
6160
怎么用Python绘制这样的图?
最近看到一张图,感觉很酷炫,搜索得知是叫做弦图。看到很多用R语言绘制的案例,以及有Excel大佬用VBA也绘制了一个,简直不要太强。
可以叫我才哥
2021/09/03
1.2K0
怎么用Python绘制这样的图?
干货推荐 | 掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)
本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bokeh 交互式应用程序的过程,内容循序渐进且具有很高的实用性。本文共有两万字左右,属于纯干货分享,强烈推荐大家阅读后续内容。
咸鱼学Python
2019/06/03
2.3K0
干货推荐 | 掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)
干货:可视化项目实战经验分享,轻松玩转Bokeh(建议收藏)
导读:本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bokeh 交互式应用程序的过程,内容循序渐进且具有很高的实用性。本文共有两万字左右,属于纯干货分享,强烈推荐大家认真读完并收藏!
IT阅读排行榜
2019/03/18
2.9K0
干货:可视化项目实战经验分享,轻松玩转Bokeh(建议收藏)
掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)
本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bokeh 交互式应用程序的过程,内容循序渐进且具有很高的实用性。本文共有两万字左右,属于纯干货分享,强烈推荐大家阅读后续内容。
数据森麟
2019/09/27
2.2K0
掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)
必学:跨表自动同步数据小妙招
几乎每天都有用在户咨询,如何将问卷中的线索同步至纷享销客;如何将MySQL的数据同步至金数据;如何将微信公众号的数据同步至表格里。
阿那个沫
2022/05/31
3.2K1
必学:跨表自动同步数据小妙招
使用 Bokeh 为你的 Python 绘图添加交互性
在这一系列文章中,我通过在每个 Python 绘图库中制作相同的多条形绘图,来研究不同 Python 绘图库的特性。这次我重点介绍的是 Bokeh(读作 “BOE-kay”)。
用户1880875
2021/09/16
1.7K0
Python:简单select模块使用
select 多并发socket 例子 #!/usr/bin/env python #coding:utf-8 import select import socket import Queue listen_addr=('0.0.0.0',8000) #监听服务器 server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: server.bind(listen_addr) server.setblocking(0) exce
py3study
2020/01/13
6310
Python使用Queue对象实现多线程同步小案例
queue模块的Queue对象实现了多生产者/多消费者队列,尤其适合需要在多个线程之间进行信息交换的场合,实现了多线程编程所需要的所有锁语义。 Queue对象主要实现了put()和get()方法,分别用来往队列尾部追加元素和在队列头部获取并删除元素。这两个方法都允许指定超时时间,其用法分别为put(item, block=True, timeout=None)和get(block=True, timeout=None) 在下面的代码中,自定义了生产者线程类和消费者线程类,生产者生产随机数量个元素并放置到队列
Python小屋屋主
2018/04/16
8920
使用 Python 进行数据可视化之Bokeh
🌊 作者主页:海拥 🌊 作者简介:🏆CSDN全栈领域优质创作者、🥇HDZ核心组成员、🥈蝉联C站周榜前十 上一篇文章我们介绍了 Seaborn,接下来让我们继续我们列表的第三个库。Bokeh 主要以其交互式图表可视化而闻名。Bokeh 使用 HTML 和 JavaScript 呈现其绘图,使用现代 Web 浏览器来呈现具有高级交互性的新颖图形的优雅、简洁构造。 安装 要安装此类型,请在终端中输入以下命令。 pip install bokeh 散点图 散点图中散景可以使用绘图模块的散射()方法被绘制。这里
海拥
2021/11/03
2.6K0
使用 Python 进行数据可视化之Bokeh
通过SSH使用Rsync同步两个VPS的文件
2、使用SSH登录B服务器 创建authorized_keys文件,存储A服务器的公共SSH key。如果没有authorized_keys文件,则创建此文件。
用户8851537
2021/07/23
7010
MySQL的insert into select 引发锁表
(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在
网罗开发
2021/01/29
2.1K0
MySQL的insert into select 引发锁表
MySQL的insert into select 引发锁表
(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在
好好学java
2020/11/06
6.7K0
MySQL的insert into select 引发锁表
用Python进行美丽而轻松的绘图— Pandas + Bokeh
尽管Matplotlib可以满足我们在Python中绘制图形时的所有需求,但有时使用它创建漂亮的图表有时会很耗时。好吧,有时候我们可能想向老板展示一些东西,以便拥有一些漂亮且互动的情节。 有很多出色的库可以做到这一点,Bokeh就是其中之一。但是,可能还需要一些时间来学习如何使用此类库。实际上,已经有人为我们解决了这个问题。这是一个名为的库Pandas-Bokeh,该库直接使用Pandas并使用Bokeh渲染数据。语法非常简单,我相信您可以立即开始使用它!
用户2966292
2021/04/21
2.2K0
如何SELECT进行单表查询,怎样使用WHERE结合各种运算符对数据进行过滤,如何使用ORDER BY 子句 查询
概述:使用数据库保存数据,我们对数据库的操作主要是增,删,改,查操作,其中从数据库中查询数据更为基础,使用不同的查询方式,具有不同的查询效率。
一头小山猪
2020/04/10
3.6K0
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句的区别
使用 SQL 进行数据复制的时候,会有 SELECT INTO 和 INSERT INTO SELECT 两种语句用法,下面简单罗列一下大概的区别:
Denis
2023/04/15
5710
go的select使用
package main import ( "fmt" "time" ) func main() { //select语句属于条件分支流程控制语句,不过它只能用于通道。它可以包含若干条case语句,并根据条件选择其中之一执行。select语句的case关键词只能后跟用于通道的发送操作的表达式以及接受操作的表达式或语句。 //golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 var ch1 = make(chan int) //生成一个协程 go func() { for i := 0; i < 3; i++ { ch1 <- i } }() defer close(ch1) done := 0 finished := 0 for finished < 3 { select { case v, ok := <-ch1: if ok { done = done + 1 fmt.Println(v) } } finished = finished + 1 } fmt.Println("Done", done) //当for 和 select结合使用时,break语言是无法跳出for之外的,因此若要break出来,这里需要加一个标签,使用goto, 或者break 到具体的位置 //这里是使用break样例 i := 0 forend: for { select { case <-time.After(time.Second * time.Duration(2)): i++ if i == 5 { fmt.Println("break now") break forend } fmt.Println("inside the select: ") } } //这里使用goto i = 0 for { select { case <-time.After(time.Second * time.Duration(2)): i++ if i == 5 { fmt.Println("break now") goto ForEnd } fmt.Println("inside the select: ") } fmt.Println("inside the for: ") } ForEnd: }
公众号-利志分享
2022/04/25
3010
Python使用两个Event对象同步生产者消费者问题
问题描述:如果缓冲区满则生产者等待,若空则生产者往缓冲区放置物品至缓冲区满;如果缓冲区空则消费者等待,若满则消费者从缓冲区获取物品进行消费直至缓冲区空。
Python小屋屋主
2018/07/23
5980
Python使用两个Event对象同步生产者消费者问题
点击加载更多

相似问题

bokeh select小部件不更新绘图。

11

Python Bokeh FileInput小部件

10

Bokeh Python CustomJS回调更新选择要过滤散点图的小部件

115

格式化bokeh表小部件

12

如何在bokeh中使用select小部件动态显示inputbox

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文