С 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 файл, сделать снимок экрана, обрезать и сохранить как изображение