图像和栅格数据#

您可以使用 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 的所有不同组合。