图像和栅格数据#

您可以使用 image()image_rgba() 字形方法在 Bokeh 图表上显示 2D 图像数组。您可以将悬停工具提示与图像字形一起使用,以便用户查看每个像素的值。有关如何为图像启用悬停工具提示的更多信息,请参阅 图像悬停

原始 RGBA 数据#

以下示例展示了如何使用 image_rgba() 方法显示使用原始 RGBA 数据的图像。

import numpy as np

from bokeh.plotting import figure, show

N = 20
img = np.empty((N,N), dtype=np.uint32)
view = img.view(dtype=np.uint8).reshape((N, N, 4))
for i in range(N):
    for j in range(N):
        view[i, j, 0] = int(i/N*255)
        view[i, j, 1] = 158
        view[i, j, 2] = int(j/N*255)
        view[i, j, 3] = 255

p = figure(width=400, height=400)
p.x_range.range_padding = p.y_range.range_padding = 0

# must give a vector of images
p.image_rgba(image=[img], x=0, y=0, dw=10, dh=10)

show(p)

颜色映射图像#

以下示例展示了如何提供标量值数组,并让 Bokeh 使用 image() 字形方法在浏览器中自动对数据进行颜色映射。

import numpy as np

from bokeh.plotting import figure, show

x = np.linspace(0, 10, 300)
y = np.linspace(0, 10, 300)
xx, yy = np.meshgrid(x, y)
d = np.sin(xx) * np.cos(yy)

p = figure(width=400, height=400)
p.x_range.range_padding = p.y_range.range_padding = 0

# must give a vector of image data for image parameter
p.image(image=[d], x=0, y=0, dw=10, dh=10, palette="Sunset11", level="image")
p.grid.grid_line_width = 0.5

show(p)

请注意,此示例将渲染级别设置为 "image"。通常,Bokeh 在网格线上方绘制所有字形,但是使用此渲染级别,它们将出现在网格线下方

原点和锚点#

image()image_rgba() 字形提供了 originanchor 属性,用于控制图像的相对位置和方向。

绘制时,图像将覆盖大小为 dw 乘以 dh 的矩形绘图区域。

anchor 属性指定矩形绘图区域相对于字形坐标 xy 的位置。它可用于在垂直或水平方向上将图像从 xy 移动。

origin 属性指定矩形绘图区域的哪个角对应于图像数组的 [0, 0] 像素。它可用于在其绘图区域内垂直或水平翻转图像。

下面的示例允许您探索简单 2x2 图像的 anchororigin 的所有不同组合。