Я разрабатываю что-то с боке, где я хочу создать и изменить некоторые графики в зависимости от положения и значения стрелок на графике. Линии обновлены отлично, но у меня есть некоторые проблемы со стрелками.
Проблема в том, что когда кнопка создает стрелку на графике, она обрезается. Это просто происходит, когда я использую row
в layout
Вот минимальный пример с изображением графика
from bokeh.application import Application
from bokeh.server.server import Server
from bokeh.application.handlers.function import FunctionHandler
from bokeh.layouts import layout,row
from bokeh.models import Arrow, NormalHead,Button
from bokeh.plotting import figure
from functools import partial
class BkApp():
def __init__(self):
self.plot = figure(plot_height=200, plot_width=600, x_range=(-1,5), y_range=(-1500, 1500),tools='save')
self.btn = Button(label="Create Arrow", button_type="success")
self.doc = None
self.Layout = layout()
def Btn_function(APP:BkApp):
APP.plot.add_layout(Arrow(end=NormalHead(size=5, fill_color="#C0392B"),
x_start=5,
y_start=0,
x_end=-1,
y_end=0,
line_width= 3,
line_color = "#C0392B"))
APP.doc.clear()
APP.doc.add_root(APP.Layout)
def make_document(doc, APP:BkApp):
APP.doc = doc
APP.Layout = layout(row(APP.btn,APP.plot))
APP.doc.add_root(APP.Layout)
if __name__ == '__main__':
app = BkApp()
app.btn.on_click(partial(Btn_function, APP=app))
bkapp = {'/': Application(FunctionHandler(partial(make_document, APP=app)))}
server = Server(bkapp)
server.start()
server.io_loop.add_callback(server.show, "/")
server.io_loop.start()
Стрелка обрезается так: Cut Arrow
Но если я создаю макет любым инструментом, он работает отлично. Поэтому, если я использую это APP.Layout = layout(APP.btn,APP.plot)
, график показывает стрелку.
Я пытаюсь найти обходной путь, но я не понимаю, почему эта ошибка возникает именно тогда, когда я использую row
Я использую Python 3.6 и bokeh 2.0.0
ОБНОВЛЕНИЕ: по-видимому, это происходит только тогда, когда я нажимаю кнопки слева от графика. Если кнопки на правой стороне, все работает.