Боке: диапазон при построении нескольких графиков - PullRequest
0 голосов
/ 27 апреля 2018

Я довольно новичок в Bokeh, поэтому все еще, возможно, что-то упускаю, но я продолжаю сталкиваться с проблемами при попытке использовать Span на нескольких графиках, если я генерирую графики в цикле. Вот что я пытаюсь:

titleString = 'Test Plot'
plotVals = [1, 2]
upperLimit = Span(location=6, dimension='width', line_color='red', line_dash='dashed', line_width=1)
lowerLimit = Span(location=-6, dimension='width', line_color='red', line_dash='dashed', line_width=1)
xVals = [0,1,2,3,4]
yVals = [2,4,3,4,2]
for t in enumerate(plotVals):
    print(t[1])
    imgTitle = 'Span Test ' + str(t[0])
    p = figure(title=imgTitle, plot_width=800, plot_height=450, y_range=(-8, 8), x_range=(-4,8))
    p.add_layout(upperLimit)
    p.add_layout(lowerLimit)
    p.circle(xVals,yVals, size=5)            
    show(p)
    reset_output()

Первый график получается, как и ожидалось, но второй выходит из строя со следующим сообщением:

ValueError: для объекта, который будет добавлен, уже установлен атрибут 'plot'

Полагаю, я делаю что-то глупое. Может ли кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 27 апреля 2018

Средства визуализации (включая аннотации, такие как Span) не могут быть разделены между несколькими участками. Вам нужно будет создать новые пролеты для каждого участка.

Если вы явно пытаетесь повторно использовать конфигурации диапазона, определенные вне цикла, вы можете переписать их так:

titleString = 'Test Plot'
plotVals = [1, 2]

upper_kw = dict(location=6, dimension='width', line_color='red', line_dash='dashed', line_width=1)
lower_kw = dict(location=-6, dimension='width', line_color='red', line_dash='dashed', line_width=1)

xVals = [0,1,2,3,4]
yVals = [2,4,3,4,2]
for t in enumerate(plotVals):
    imgTitle = 'Span Test ' + str(t[0])
    p = figure(title=imgTitle, plot_width=800, plot_height=450, y_range=(-8, 8), x_range=(-4,8))

    p.add_layout(Span(**upper_kw))
    p.add_layout(Span(**lower_kw))

    p.circle(xVals, yVals, size=5)            
    show(p)
    reset_output()
...