Bokeh - изменение верхнего значения vbar с помощью CustomJS не распространяется за пределы функции JS - PullRequest
0 голосов
/ 05 декабря 2018

Я использую Панды и Боке;Я не запускаю сервер, поэтому я использую обратные вызовы JS через CustomJS

. Я настроил фигуру и переключатель, чтобы изменить данные, относящиеся к оси Y.Я написал код JS для обновления рисунка;Проблема в том, что даже при изменении значения top в элементе vbar график не изменится.

В большинстве примеров изменения выполняются для columndatasource;хотя мой vbar загружает непосредственно поля, которые мне нужно отобразить;поэтому подход к изменению фрейма данных не будет работать

Предположим, что pandas dataframe содержит имена, возраст и вес;это мой текущий набор данных.Идея состоит в том, чтобы переключаться между значениями для y, чтобы я мог показать возраст или вес, оставив имя на оси X.

Это то, что я имею до сих пор;и это дает график;хотя это не изменит данные на Y

x_field = 'Name'
y_field = 'Age'
source = ColumnDataSource(pandas_df)
x_axis_field = source.data[x_field].tolist()

p=figure(plot_width=800, ploth_height=600, title="test", x_axis_label="names", y_axis_label="age", x_range=x_field)
p.xaxis.major_label_orientation = 0.78
myplot = p.vbar(top=y_field, x=x_field, width=0.5, source=source)

callback_radiobuttons = CustomJS(args=dict(source=source, y_axis=myplot.glyph.top), code="""
  // JS code 
  var selected_button = cb_obj.active;
  var data_set = source.data;
  if (selected_button == 0) {
      // choose age for the Y
      y_axis="age";
  }
  if (selected_button == 1) {
      // choose weight for the Y
      y_axis="weight";
  }
  // update the plot
  source.change.emit()
  // END JS code
  """)

radio_group = RadioButtonGroup(labels=["Age", "Weight"], active=0)
radio_group.js_on_change('active', callback_radiobuttons)
layout = row(widgetbox(radio_group), p)
show(layout)

Изменение кнопки не изменит значения, поскольку изменения, сделанные в y_axis, не распространяются за пределы функции JS.

Не уверен, как вы это измените;потому что он перезагружает исходное значение каждый раз, когда я нажимаю на кнопку виджета радиокнопки.

...