С Bokeh, как сохранить в png или jpg вместо html файла?

Мне нужно экспортировать изображения графиков и графиков, которые я создаю с помощью Bokeh.

Обычно я делаю

output_file("test.html")

Однако, я хочу скопировать этот граф в лист Excel. Он не должен быть интерактивным, хотя это было бы блестящим. Как экспортировать график в виде изображения? Используя код, не нажимая на "предварительный просмотр/сохранение".

Ответы

Ответ 1

Начиная с Bokeh 0.12.6, теперь можно экспортировать PNG и SVG непосредственно из Код Python.

Экспорт PNG выглядит следующим образом

export_png(plot, filename="plot.png")

И экспортирование SVG выглядит следующим образом

plot.output_backend = "svg"
export_svgs(plot, filename="plot.svg")

Существуют некоторые необязательные зависимости, которые необходимо установить. Дополнительную информацию можно найти в разделе Экспорт графиков в Руководство пользователя.

Ответ 2

В качестве альтернативы, если вы готовы работать с JavaScript. И, например, если вы хотите сохранить много холстов (каждый элемент холста имеет график), вы можете использовать метод JavaScript canvas.toDataUrl() для преобразования холста в png как base64. Когда вы получаете все изображения, вы можете делать с ними все, что захотите. Эти изображения имеют разрешение 96 точек на дюйм, и его нельзя изменить, поэтому, если вам нужно большее разрешение, вам также потребуется обновить размеры всех элементов графика до преобразования: шрифты, ось, размер графика...

Если вы используете этот подход, вам не нужно устанавливать зависимости selenium и phantomjs в вашей среде Python.

Также имейте в виду, что если вы используете export_png и экспортируете график с большим размером, ось и шрифты не будут пропорционально больше

Ответ 3

ОК, исправляя себя, я скучаю по вашей части, не используя предварительный просмотр/сохранение... В настоящее время мы не предоставляем прямой программный способ экспорта графиков Bokeh в png файл. Вам потребуется взаимодействие с пользователем, даже используя внутренние функции. Возможно, мы добавили в эту функцию такую ​​функцию.

Приветствия.

Ответ 4

Я задал аналогичный вопрос вчера. Связанное решение может работать для вас. В основном вы открываете файл на веб-странице, снимаете снимок экрана, который затем можете обрезать и сохранять как изображение.

Python открыть html файл, сделать снимок экрана, обрезать и сохранить как изображение