繁体   English   中英

Python 3 Bokeh Heatmap Rect 简单示例未在图中显示任何内容

[英]Python 3 Bokeh Heatmap Rect simple example not showing anything in plot

我正在尝试使用 python 的 Bokeh 库对简单的分类热图进行颜色编码。 例如,给定下表,我想用红色方块替换每个“A”,用蓝色方块替换每个“B”:

AAAABAAAAB
BBBAAAABBB

首先,我认为以下将产生 2 行 10 个相同颜色的正方形。 但我只是得到一个空白的情节。 我一定缺少如何在散景中创建分类热图的核心概念。 首先,我试图模仿散景网站上的一个例子:

https://docs.bokeh.org/en/latest/docs/gallery/categorical.html

有没有人看到我错过了什么? (这是一个简单的例子。我有很多行和数百列,我需要按类别着色。)

from bokeh.plotting import figure, show, output_file

hm = figure()
colors = ['#2765a3' for x in range(20)]
x_input = [x for x in range(10)]
y_input = ['a', 'b']
hm.rect(x_input, y_input, width = 1, height = 1, color = colors)
output_file('test.html)
show(hm)

您需要为每个 rect创建特定坐标。 如果 y 轴上有 2 个可能的值,x 轴上有 10 个可能的值,那么所有矩形就有20对可能的唯一坐标(即这两个列表的叉积)。 例如:

(0, 'A'), (0, 'B'), (1, 'A'), (1, 'B'), ...

如果将这些元组中的每一个拆分为 x 坐标和 y 坐标,并将 x 和 y 收集到它们自己的列表中,您就会明白为什么必须同时存在 20 个 x 坐标和 20 个 y 坐标。

此外,对于分类坐标,您必须告诉figure它们是什么。 这是您的代码更新:

from bokeh.plotting import figure, show

colors = ['#2765a3' for x in range(20)]
x = list(range(10)) * 2
y = ['a'] * 10 +  ['b'] * 10

hm = figure(y_range=('a', 'b'))
hm.rect(x, y, width=1, height=1, fill_color=colors, line_color="white")

show(hm)

在此处输入图片说明

关于分类数据用户指南部分有更多关于如何在 Bokeh 中使用分类的信息,包括热图的完整示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM