如何在散景图中使用Javascript?

How to use Javascript in Bokeh map?

我想更改一个变量的名称,因为我稍后会用它来准确指定我需要绘制的内容。但是,Javascript 给我带来的麻烦比我想象的要多。我正在使用下拉菜单,当我 select 一个值时,变量也应该改变,但那没有发生。有什么建议么?我对 Javascript 还是很陌生,所以任何建议都将不胜感激

column="justastring"


 selecthandler = CustomJS(args=dict(column=column), code="""
   var col=column.value;
   
  if (cb_obj.value=="Ozone"){
      col='OZONE';   
   }
   if (cb_obj.value=="O2"){
       col='O_2';
   }

   if(cb_obj.value=="DO2"){
        col='DO2'; 
   }
   
   


    column.change.emit();
    """)

  select.js_on_change('value',selecthandler)

您没有提供可运行的代码,所以我从头开始创建了一个最小示例:

from bokeh.layouts import column
from bokeh.models import ColumnDataSource, Select, CustomJS
from bokeh.plotting import figure, show
from bokeh.transform import linear_cmap
from bokeh.palettes import Viridis3

ds = ColumnDataSource(dict(x=[0, 1, 2],
                           a=[0, 0, 1],
                           b=[3, 2, 1]))
p = figure()

renderer = p.rect(x='x', y=0, width=1, height=1,
                  fill_color=linear_cmap('a', Viridis3, 0, 1), source=ds)

s = Select(value='a', options=['a', 'b'])
s.js_on_change('value',
               CustomJS(args=dict(r=renderer, ds=ds),
                        code="""
                            const c = cb_obj.value;
                            const fc = r.glyph.fill_color;
                            fc.field = c;
                            fc.transform.low = Math.min(...ds.data[c]);
                            fc.transform.high = Math.max(...ds.data[c]);
                            // If you don't change `low` and `high` fields above, you will
                            // have to uncomment this line to trigger value change signals
                            // so that the glyphs are re-rendered.
                            //r.glyph.fill_color = fc;
                        """))

show(column(s, p))