首页 > 解决方案 > 散景 - 标签集 - 忽略 NaN 值

问题描述

我正在为 Bokeh 可视化中的所有点分配标签。

但是,为每个点分配标签会使事情变得过于拥挤。有100个或更多点。

所以我在我的 pandas df 中创建了一个新列,其中我只有一个随机的 10 行集的标签值。其他行具有 NaN 值。

有没有办法让 Bokeh 忽略 NaN 值而不为它们创建标签?

labels = LabelSet(x='myDateColumn', y='myNumericColumn', text='columnWithOnly10RowsHavingTextValue', level='glyph',
          x_offset=5, y_offset=5, source=source, render_mode='canvas')

p.add_layout(labels)

标签: pythonbokeh

解决方案


您可以为标签创建一个新数据框并删除具有 NaN 值的行,将其转换为 ColumnDataSource 并将其用作标签的源。

df = pd.DataFrame.from_dict(data)
source = ColumnDataSource(df)
p.circle(x='myDateColumn', y='myNumericColumn', source=source)

dfNoNaN = df.dropna()
noNaNsource = ColumnDataSource(dfNoNaN)
labels = LabelSet(x='myDateColumn', y='myNumericColumn', text='columnWithOnly10RowsHavingTextValue', level='glyph',
          x_offset=5, y_offset=5, source=noNaNsource, render_mode='canvas')

p.add_layout(labels)

推荐阅读