Я пытался добавить вторую ось y к моему сюжету BokehJS, но не могу найти, как это сделать правильно. В python bokeh это работает, но в javascript это работает по-другому. Вот мининал пример, как я пытаюсь создать и использовать вторую ось:
var plt = Bokeh.Plotting;
// create some data and a ColumnDataSource
var x = Bokeh.LinAlg.linspace(-0.5, 20.5, 10);
var y = x.map(function (v) { return v * 0.5 + 3.0; });
var source = new Bokeh.ColumnDataSource({ data: { x: x, y: y }});
var p = plt.figure({extra_y_ranges: {"y2": new Bokeh.Range1d({start: -1.5, end: 150})} });
p.yaxis.axis_label = 'Axis Left';
p.add_layout(new Bokeh.LinearAxis({ y_range_name: "y2", axis_label: 'Axis Right'}), 'right');
// add a Line glyph
var line = new Bokeh.Line({
x: {field: "x"},
y: {field: "y"},
line_color: "#F00",
line_width: 3
});
p.add_glyph(line, source);
// add a Line glyph
var line = new Bokeh.Line({
x: {field: "x"},
y: {field: "y"},
line_color: "#FF0",
line_width: 2,
y_range_name: "y2"
});
p.add_glyph(line, source);
plt.show(p);
ось отображается, но линия по-прежнему использует координаты левой оси.
Хитрость заключалась не в том, чтобы добавить свойство y_range_name к прямой линии, а в том, чтобы объект глифа линии, добавленной в график: