Как сделать столбец источника данных столбца использовать вторые оси Y для отображения - PullRequest
0 голосов
/ 03 октября 2019

Я использую глиф VBar для отображения гистограммы в Боке, и данные передаются на него через ColumnDataSource. Кроме того, я хочу добавить различные оси Y при построении данных из одного из столбцов.

Таким образом, код выглядит следующим образом:

self.bar_text = ["V1, "V2", "V3"]
self.plot = figure(x_range=FactorRange(*self.bar_text), y_range=[0, 150])
# Now I add an extra y-axes which is displayed correctly
self.plot.extra_y_ranges = {"delay": Range1d(start=0, end=25)}
self.plot.add_layout(LinearAxis(y_range_name="delay"), 'right')

# The data will be fed to the graph via th column data source
self.input_sources = ColumnDataSource(dict(x=[], top=[], color=[]))
self.bar_glyph = VBar(x="x", top="top", bottom=0, width=0.2, fill_color="color")
self.plot.add_glyph(self.input_sources, self.bar_glyph) 

Я могу подать данные для этого счто-то вроде:

obj.input_sources.stream(dict(x=['V1', 'V2', "V3"],
                                 top=[30, 50, 10],
                                 color=["blue", "blue", "red"]), 3)

Однако я не уверен, как я могу связать последний столбец V3 со вторыми дополнительными осями Y.

1 Ответ

1 голос
/ 03 октября 2019

Хорошо, я понял это. Ответ состоит в том, чтобы использовать отдельные источники данных и глифы для них и назначить им правильные y_range

self.left_input_sources = ColumnDataSource(dict(x=[], top=[], color=[]))
self.right_input_sources = ColumnDataSource(dict(x=[], top=[], color=[]))
self.left_bar_glyph = VBar(x="x", top="top", bottom=0, width=0.2, fill_color="color")
self.right_bar_glyph = VBar(x="x", top="top", bottom=0, width=0.2, fill_color="color")
self.plot.add_glyph(self.left_input_sources, self.left_bar_glyph)  # Use default y-axes
self.plot.add_glyph(self.right_input_sources, self.right_bar_glyph, y_range_name='delay')
...