Как добавить аннотацию к ячейкам тепловой карты? - PullRequest
1 голос
/ 01 июля 2019

Это дополнительный вопрос , этот .

Я хотел бы добавить текст в ячейки тепловой карты.Я думал, что смогу использовать LabelSet, как описано здесь .Однако, к сожалению, я не вижу меток, когда запускаю следующий код:

import pandas as pd

from bokeh.io import show
from bokeh.models import (CategoricalColorMapper, LinearColorMapper,
                          BasicTicker, PrintfTickFormatter, ColorBar,
                          ColumnDataSource, LabelSet)
from bokeh.plotting import figure
from bokeh.palettes import all_palettes
from bokeh.transform import transform

df = pd.DataFrame({
    'row': list('xxxxxxyyyyyyzzzzzz'),
    'column': list('aabbccaabbccaabbcc'),
    'content': ['c1', 'c2', 'c3', 'c1', 'c2', 'c3'] * 3,
    'amount': list('123212123212123212')})

df = df.drop_duplicates(subset=['row', 'column'])

source = ColumnDataSource(df)

rows = df['row'].unique()
columns = df['column'].unique()
content = df['content'].unique()

colors = all_palettes['Viridis'][max(len(content), 3)]
mapper = CategoricalColorMapper(palette=colors, factors=content)

TOOLS = "hover,save,pan,box_zoom,reset,wheel_zoom"

p = figure(title="My great heatmap",
           x_range=rows, y_range=columns,
           x_axis_location="above", plot_width=600, plot_height=400,
           tools=TOOLS, toolbar_location='below',
           tooltips=[('cell content', '@content'), ('amount', '@amount')])

p.grid.grid_line_color = None
p.axis.axis_line_color = None
p.axis.major_tick_line_color = None
p.axis.major_label_text_font_size = "5pt"
p.axis.major_label_standoff = 0

p.rect(x="row", y="column", width=1, height=1,
       source=source,
       fill_color=transform('content', mapper))

labels = LabelSet(x='row', y='column', text='content', level='glyph',
                  x_offset=1, y_offset=1, source=source,
                  render_mode='canvas')

p.add_layout(labels)
show(p)

Я вижу тепловую карту, но меток нет.Как я могу отобразить текст?

1 Ответ

1 голос
/ 03 июля 2019

Существует пять уровней: «изображение, подложка, глиф, аннотация, оверлей».Уровень p.rect - это глиф, если вы не установите аргумент уровня LabelSet, его уровень - это аннотация, которая находится над глифом уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...