簡體   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