📜  如何处理散景中的图像

📅  最后修改于: 2022-05-13 01:55:34.805000             🧑  作者: Mango

如何处理散景中的图像

在本文中,我们将了解如何在 Bokeh 中处理图像。

为此,我们将使用ImageURL Glyph 此字形呈现从给定 URL 加载的图像。

示例 1:从 URL 导入图像

在这个例子中,我们从给定的 URL 加载图像,然后在绘图上渲染图像。在此示例中,我们从 Web 加载图像,该图像也可以在本地加载。在这里,我们在绘图上显示了两个具有不同参数值(例如 x、y、w、h 等)的图像。您可以观察输出以更好地理解。



Python
# importing numpy package and other libraries
import numpy as np
from bokeh.io import curdoc, show
from bokeh.models import ColumnDataSource, Grid, ImageURL, LinearAxis, Plot, Range1d
from bokeh.plotting import figure
  
# url to load image from
url = "https://media.geeksforgeeks.org/wp-content/\
uploads/20210829161730/logo.png"
  
N = 5
  
# creating columndatasource
source = ColumnDataSource(dict(
    url=[url]*N,
    x1=np.arange(N),
    y1=np.arange(N),
    w1=[35]*N,
    h1=[64]*N,
))
  
# creating x and y axis range
xdr = Range1d(start=-100, end=300)
ydr = Range1d(start=-100, end=300)
  
# creating a plot with above x and y axes range
plot = Plot(
    title=None, x_range=xdr, y_range=ydr,
  plot_width=400, plot_height=400,
    min_border=0, toolbar_location=None)
  
# loading the image using imageUrl
image = ImageURL(url=["https://media.geeksforgeeks.org/\
wp-content/uploads/20210829161730/logo.png"],
                 x=50, y=80, w=200, h=250, anchor="bottom_left")
image1 = ImageURL(url="url", x="x1", y="y1", w="w1",
                  h="h1", anchor="center")
  
# rendering the images to the plot
plot.add_glyph(source, image)
plot.add_glyph(source, image1)
  
xaxis = LinearAxis()
plot.add_layout(xaxis, 'below')
  
yaxis = LinearAxis()
plot.add_layout(yaxis, 'left')
  
# adding grid lines to the plot
plot.add_layout(Grid(dimension=0, ticker=xaxis.ticker,
                     grid_line_color='#00ff00'))
  
plot.add_layout(Grid(dimension=1, ticker=yaxis.ticker,
                     grid_line_color='#00ff00'))
  
# creates output file
curdoc().add_root(plot)
curdoc().theme = 'caliber'
  
# showing the plot on output file
show(plot)


Python
# importing numpy package and other libraries
import numpy as np
from bokeh.io import curdoc, show
from bokeh.models import ColumnDataSource, Grid, ImageURL, LinearAxis, Plot, Range1d
from bokeh.plotting import figure
  
# create dict as basis for ColumnDataSource
data = {'x1': [10, 20, 30, 40, 50],
        'y1': [60, 70, 80, 90, 100]}
  
# create ColumnDataSource based on dict
source = ColumnDataSource(data=data)
  
# creating figure
p = figure(plot_height=500, plot_width=500)
p.circle(x="x1", y="y1", size=20, source=source)
  
# rendering the image using imageUrl
image = ImageURL(url=["https://media.geeksforgeeks.org/\
wp-content/uploads/20210902155548/imgurl2-200x112.jpg"],
                 x=80, y=100, w=50, h=40, anchor="center", 
                 retry_attempts=2)
  
# adding the images to the plot
p.add_glyph(source, image)
  
# creates output file
curdoc().add_root(p)
  
# showing the plot on output file
show(p)


输出:

解释:

  • 我们正在创建 ColumnDataSource,它为我们的绘图的字形提供数据。 Bokeh 有自己的数据结构,称为 ColumnDataSource,可用作任何 Bokeh 对象的输入。我们正在使用 NumPy 数组创建数据。
  • 现在使用 range1d 创建 x 和 y 范围,它在标量维度中创建一个范围,然后将其分配给我们将在创建绘图时使用的 xdr 和 ydr。
  • 然后我们用 xdr 和 ydr 作为 x_range 和 y_range 创建绘图,并将绘图的高度和宽度设置为 400。
  • 然后,我们通过设置代码中所示的所有参数的值,从我们之前声明的 URL 中检索图像。我们通过给出不同的值在这里使用两个图像。
  • 现在,我们将图像渲染到绘图中。
  • 接下来,我们使用 Grid函数将网格线添加到绘图中,并为其指定颜色“绿色”。
  • 然后,我们将绘图添加到应用程序代码 curdoc 中,它代表一个新文档并发送到 bokehJs 以将其显示给用户。

示例 2:创建圆形字形

在此示例中,我们将创建一个带有圆形字形的图形,然后使用字形 ImageURL 简单地从给定的 URL 渲染图像。

Python

# importing numpy package and other libraries
import numpy as np
from bokeh.io import curdoc, show
from bokeh.models import ColumnDataSource, Grid, ImageURL, LinearAxis, Plot, Range1d
from bokeh.plotting import figure
  
# create dict as basis for ColumnDataSource
data = {'x1': [10, 20, 30, 40, 50],
        'y1': [60, 70, 80, 90, 100]}
  
# create ColumnDataSource based on dict
source = ColumnDataSource(data=data)
  
# creating figure
p = figure(plot_height=500, plot_width=500)
p.circle(x="x1", y="y1", size=20, source=source)
  
# rendering the image using imageUrl
image = ImageURL(url=["https://media.geeksforgeeks.org/\
wp-content/uploads/20210902155548/imgurl2-200x112.jpg"],
                 x=80, y=100, w=50, h=40, anchor="center", 
                 retry_attempts=2)
  
# adding the images to the plot
p.add_glyph(source, image)
  
# creates output file
curdoc().add_root(p)
  
# showing the plot on output file
show(p)

输出: