小编jof*_*roe的帖子

情节和小部件安排的散景布局

我的散景应用程序有一个特定的设计.我正在使用bokeh 0.12.3和一个散景服务器来保持一切同步.请看看我的模型:

在此输入图像描述

在左侧,有一个静态导航栏,视图的右侧部分将由手动添加的图组成.右侧的绘图列数量应改变窗口大小.我很清楚散布布局文档布局图和小部件,但它有点复杂.这是我目前的布局:

doc_layout = layout(children=[[column(radio_buttons,
                                      cbx_buttons,
                                      div,
                                      data_table,
                                      plot,
                                      button)]],
                    sizing_mode='scale_width')
curdoc().add_root(doc_layout)
Run Code Online (Sandbox Code Playgroud)

为了添加我使用的新图:

doc_layout.children[-1].children.append(plot)
# appends plot to layout children [[column(..), plot]]
Run Code Online (Sandbox Code Playgroud)

但这种行为很奇怪,而且根本不是我想要达到的目标.新的图表添加在列(菜单面板)的顶部.

这里有一个简短的例子,你可以尝试看看我的意思:

from bokeh.io import curdoc
from bokeh.plotting import figure
from bokeh.models.sources import ColumnDataSource
from bokeh.models.widgets import Button, DataTable, TableColumn
from bokeh.layouts import layout, widgetbox, column, row

WIDTH = 200
HEIGHT = 200

def add_plot():
    p = figure(width=WIDTH, height=HEIGHT, tools=[], toolbar_location=None)
    p.line([0, 1, 2, 3, 4, 5], [0, 1, 4, 9, 16, 25]) …
Run Code Online (Sandbox Code Playgroud)

python bokeh

11
推荐指数
1
解决办法
7519
查看次数

散景服务器获取鼠标位置

我正在开发一个带有散景(0.12.2)的交互式应用程序,它根据特定的交互更新绘图.

现在我使用滑块来改变绘图中字形的位置,但实际上我想在特定的绘图中访问鼠标的位置.

数据集是多维矩阵(张量),密集数据,每个图在特定位置显示一个维度.如果我在一个图上更改标记符号的位置,则需要更新其他图,这意味着我必须根据更新的位置切割我的数据集.

这是一个简单的例子,我尝试使用悬停工具在我的散景服务器更新功能中获取鼠标数据:

from bokeh.plotting import figure, ColumnDataSource
from bokeh.models import CustomJS, HoverTool
from bokeh.io import curdoc

s = ColumnDataSource(data=dict(x=[0, 1], y=[0, 1]))
callback = CustomJS(args=dict(s=s), code="""
        var geometry = cb_data['geometry'];
        var mouse_x = geometry.x;
        var mouse_y = geometry.y;
        var x = s.get('data')['x'];
        var y = s.get('data')['y'];
        x[0] = mouse_x;
        y[0] = mouse_y;
        s.trigger('change');
    """)
hover_tool = HoverTool(callback=callback)
p = figure(x_range=(0, 1), y_range=(0, 1), tools=[hover_tool])
p.circle(x='x', y='y', source=s)


def update():
    print s.data

curdoc().add_root(p)
curdoc().add_periodic_callback(update, 1000)
Run Code Online (Sandbox Code Playgroud)

不幸的是,服务器只输出:

{'y':[0,1],'x':[0,1]}

{'y':[0,1],'x':[0,1]}

{'y':[0,1],'x':[0,1]} …

javascript python bokeh

5
推荐指数
1
解决办法
1115
查看次数

标签 统计

bokeh ×2

python ×2

javascript ×1