Как сохранить все сюжеты с изображением боке в SVG и HTML, а не только первый - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь сохранить свою фигуру боке в форматах png, svg и html. Рисунок состоит из нескольких линейных участков, выполненных в цикле. Файлы svg и html каким-то образом содержат только первый линейный график, хотя выходные данные png и html, которые открываются в браузере, показывают все линейные графики.

p = bokeh.plotting.figure(...)
colors = itertools.cycle(palette[10])
for i, color in zip(range(len(exp_labels)), colors):
       p.line(
       source=data.loc[data['experiment']==exp_labels[i]],
       x=x,
       y=y,
       color=color,
       legend=exp_labels[i]
       )   
bokeh.io.show(p) # figure in the browser shown fine
export_png(p, filename + '.png') # png export works fine
p.output_backend = "svg"
export_svgs(p, filename + '.svg') # svg  file shows only first lineplot
bokeh.io.save(p, filename + '.html') # html file also shows only first plot

Если svg не может записать в один файл все графики, выполненные вцикл, несмотря на то, что они принадлежат одной и той же фигуре p, мне интересно, возможно ли как-то отобразить сразу все графики с .groupby(), поскольку все данные принадлежат одному фрейму данных, и решить эту проблему путемтакой подход.

UPD : Похоже, что основная проблема svg, а html имеет проблемы только из-за измененного output_backend. Если сначала сохранить html, то сохранится нормально. Однако до сих пор неясно, как сохранить svg на всех линейных участках и как переключить output_backend на какое-либо значение по умолчанию. Я не смог найти документацию для параметров output_backend

1 Ответ

0 голосов
/ 28 октября 2019

Вполне возможно, что есть только ошибка. Начиная с Bokeh 1.4, поддержка SVG основана на сторонней библиотеке «canvas to SVG», которая больше не поддерживается. В какой-то момент его необходимо будет пересмотреть с нуля, но это вопрос ресурсов. Я бы предложил вам подать GitHub проблему

...