Боке Стрелка отрезана в сюжете - PullRequest
0 голосов
/ 15 марта 2020

Я разрабатываю что-то с боке, где я хочу создать и изменить некоторые графики в зависимости от положения и значения стрелок на графике. Линии обновлены отлично, но у меня есть некоторые проблемы со стрелками.

Проблема в том, что когда кнопка создает стрелку на графике, она обрезается. Это просто происходит, когда я использую 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

ОБНОВЛЕНИЕ: по-видимому, это происходит только тогда, когда я нажимаю кнопки слева от графика. Если кнопки на правой стороне, все работает.

1 Ответ

0 голосов
/ 15 марта 2020

Вы столкнулись с этой проблемой Bokeh: https://github.com/bokeh/bokeh/issues/9522

...