【问题标题】:Bokeh server : Customize row ratio散景服务器:自定义行比
【发布时间】:2018-06-08 09:53:50
【问题描述】:

我使用 Bokeh 将科学数据可视化了一段时间,但我未能按我的意愿自定义布局。

from bokeh.plotting import figure
from bokeh.io import show
from bokeh.layouts import row
from bokeh.models.widgets import Button

tools_to_show = 'hover, box_zoom, save, reset, pan'
p = figure(tools=tools_to_show, output_backend = "webgl")
p.line([1, 2, 3, 4], [9, 5, 7, 6])

b_valid = Button(label="valid")

my_plot = row(p, b_valid, sizing_mode="stretch_both")

show(my_plot)

我有一个绘图区和一个控制区。控制区域应该更小,可能是可用宽度的 1/3,以让绘图具有更大的区域(可用宽度的 2/3)。

我使用 sizing_mode = "stretch_both" 来确保使用屏幕中的所有可用空间。

我需要继续使用散景服务器 (bokeh serve myapp.py) 来让 python 回调工作,所以建议的嵌入式解决方案 here 不适合我。

也许serving directory 有一种带有散景命令的方法,因为有一个模板机制,但我不知道如何为绘图和控件获取单独的 div。

你有什么(简单的)想法吗?

编辑:它似乎不是散景当前可用的功能。一个有前途的解决方案是能够使用散景服务器将组件嵌入模板中:amilestone 已安排

【问题讨论】:

  • 一个想法可能是添加一个customJs回调来直接在浏览器中调整不同组件的宽度,从而可以获得屏幕的真实宽度。我目前遇到了一些困难,因为布局正在从行更改为列,原因不明。我还在挖……
  • 很遗憾,没有,我尝试使用散景服务器进行动态应用(例如根据缩放进行下采样),而我无法使用基于嵌入组件建议的解决方案。不过谢谢你的建议

标签: python bokeh


【解决方案1】:

我想说的是,我们正在放弃内置布局系统,而不仅仅是为了非常简单的事情。 PR #7708 刚刚合并,将在即将发布的 0.13.0 版本中。当0.13.0 可用时,您可以在模板中单独嵌入单个文档根,例如如果您在 Bokeh 服务器应用程序中定义五个绘图:

curdoc().add_root(p0)
curdoc().add_root(p1)
curdoc().add_root(p2)
curdoc().add_root(p3)
curdoc().add_root(p4)

它们都可以放在响应式 Bootstrap 布局中:

<div class="row">
  <div class="col-sm-8">
    {{ embed(doc.roots[0]) }}
    <br>
  </div>
  <div class="col-sm-4">
    {{ embed(doc.roots[1]) }}
    <br>
  </div>
</div>

<div class="row">
  <div class="col-sm-4">
    {{ embed(doc.roots[2]) }}
    <br>
  </div>
  <div class="col-sm-4">
    {{ embed(doc.roots[3]) }}
    <br>
  </div>
  <div class="col-sm-4">
    {{ embed(doc.roots[4]) }}
    <br>
  </div>
</div>

【讨论】:

  • 听起来不错!散景真的很棒,而且你很神奇:挖掘旧帖子以提供相关且免费的答案......尊重!不幸的是,我没有太多时间继续我的项目,但我关注散景开发并等待这个功能。再次编码的好机会。我会尽快测试你的建议。感谢您的戳和示例!
  • 很久以后:我已经测试了建议的解决方案,它按预期工作!谢谢美人!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
相关资源
最近更新 更多