2016-01-07 76 views
9

例如,您可以使用此代碼在matplotlib繪製的圖像:如何處理圖像的工作在背景虛化(Python)的

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

是這樣的可能的背景虛化(0.10)?在此先感謝您的幫助。

+1

不是這樣的。 Bokeh具有'圖像'(標量數據,彩色圖),'ImageRGBA'(原始RGBA數據)和'ImageURL'(通過網絡加載的圖像)。這將在GitHub問題跟蹤器上提出很好的功能請求。 – bigreddot

回答

14

您可以使用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

有一個問題 - 如果你只繪製的圖像(並且沒有其他數據),你必須明確地設置情節的範圍。

這裏的文檔:

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

+2

此示例代碼不再適用於0.12.5,我試圖編輯示例代碼,但它被拒絕了兩次,您需要使用以下調用image_url:'p.image_url(url = ['tree.png'], x = 0,y = 0,w = 1,h = 1,anchor =「bottom_left」)' – johnf

+0

該示例在使用散景服務器時不起作用。它無法找到圖像(404) –

6

早期的答案是有幫助的。不過,我只想要一個圖像選項,沒有任何額外的對象。因此,爲Bokeh版本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) 
+1

''figure''是一個方便的函數,它返回一個''bokeh.models.Plot''實例,其上設置了所有的軸/網格/工具。或者,你可以實例化一個空的「Plot''對象,並將圖像添加到(避免所有減法的東西) –

+0

@Luke感謝您的評論,是否有可能讓你分享一個工作代碼。 – Jayant

0

使用散景服務運行這個例子有點棘手。我建議設置工作目錄正常:

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

..和運行的背景虛化從目錄以上 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