交互式静态图像散景

时间:2018-06-23 13:01:02

标签: python bokeh

我知道,按照这个示例,我可以在散景中显示带有Div的图像:

How to display static images in Bokeh using Div

但是可以基于某些输入来更改显示的图像。因此,例如,我在图像文件夹中有三张图片,并且具有bokeh的下拉选择菜单。是否可以根据用户选择的内容来更改Div?

我正在使用bokeh服务器而不只是静态html来部署它。

我现在有这个:

def maphandler(attr, old, new):

    div.text = new

div = Div(text="<img src='images/map2016.png'>")
menu = [("2016", "<img src='images/map2016.png'>"),
        ("2017", "<img src='images/map2017.png'>"),
        ("2018", "<img src='images/map2018.png'>")]
map_dropdown = Dropdown(name='Select Year:', menu=menu)
map_dropdown.on_change('value', maphandler)
map_row = row(map_dropdown, div)
layout = layout(map_row)

我的文件夹结构如下:

/bokeh_server
   /images
      map2016.png
      map2017.png
      map2018.png
    main.py

这应该正常吗?但是,当我运行服务器时,该图像没有显示。

1 个答案:

答案 0 :(得分:2)

由于要与bokeh服务器一起部署,因此可以使用about widgets文档中所述的python处理程序。

div = Div(text="<img src='myapp/static/images/myimg.jpg'>")

menu = [("Img 1", "<img src='myapp/static/images/myimg.jpg'>"), 
        ("Img 2", "<img src='myapp/static/images/myimg2.jpg'>")]

def handler(attr, old, new):
    div.text = new

dropdown = DropDown(labels="Images", menu=menu)
dropdown.on_change("value", handler)