Как работать с изображениями в Bokeh (Python)

например, вы можете построить изображение в matplotlib, используя этот код:

%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img=mpimg.imread('image.png')
plt.imshow(img)

возможно ли что-то подобное с боке(0.10)?

3 ответов


можно использовать ImageURL символ (image_url метод построения) для загрузки изображений локально или из интернета.

from bokeh.plotting import figure, show, output_file

output_file('image.html')

p = figure(x_range=(0,1), y_range=(0,1))
p.image_url(url=['tree.png'], x=0, y=1)
show(p)

Image Example

One gotcha-если вы рисуете только изображение (и никаких других данных), вам придется явно установить диапазоны графика.

вот документы:

http://bokeh.pydata.org/en/latest/docs/reference/models/glyphs.html#bokeh.models.glyphs.ImageURL


предыдущий ответ был полезен. Тем не менее, я хотел только вариант изображения без какого-либо дополнительного объекта. Итак, добавив ответ для боке версии 0.12.0 и удалив все сетки, оси и панель инструментов.

from bokeh.plotting import figure, curdoc
from bokeh.models import ColumnDataSource, Range1d

bosch_logo = "static/tree.jpg"
logo_src = ColumnDataSource(dict(url = [bosch_logo]))

page_logo = figure(plot_width = 500, plot_height = 500, title="")
page_logo.toolbar.logo = None
page_logo.toolbar_location = None
page_logo.x_range=Range1d(start=0, end=1)
page_logo.y_range=Range1d(start=0, end=1)
page_logo.xaxis.visible = None
page_logo.yaxis.visible = None
page_logo.xgrid.grid_line_color = None
page_logo.ygrid.grid_line_color = None
page_logo.image_url(url='url', x=0.05, y = 0.85, h=0.7, w=0.9, source=logo_src)
page_logo.outline_line_alpha = 0 
curdoc().add_root(page_logo)

запуск этого примера с помощью bokeh serve немного сложнее. Предлагаю правильно настроить рабочий каталог:

server_folder/
     +main.py
     +static/
         +logo.png

.. и запустите команду bokeh serve из каталога выше server_folder

bokeh serve server_folder --show

этот код работает для меня

#main.py file
from bokeh.plotting import figure, curdoc
x_range = (-20,-10) # could be anything - e.g.(0,1)
y_range = (20,30)
p = figure(x_range=x_range, y_range=y_range)
#img_path = 'https://bokeh.pydata.org/en/latest/_static/images/logo.png'
img_path = 'server_folder/static/logo.png'
p.image_url(url=[img_path],x=x_range[0],y=y_range[1],w=x_range[1]-x_range[0],h=y_range[1]-y_range[0])
doc = curdoc()
doc.add_root(p)

enter image description here