如果 x 轴值在版本更新后是分类的,则散景标签不会呈现
Bokeh labels don't render if x axis values are categorical after version update
我是 Bokeh 的新手(使用 v2.2.1),正在寻找标记每个数据点的解决方案。复制文档中显示的示例,我找不到 X 轴为字符串的解决方案,
import pandas as pd
from bokeh.models import LabelSet, ColumnDataSource
from bokeh.plotting import figure, show
output_file("weekday_val.html")
vals = pd.DataFrame({'weekday': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
'Sales': [15, 25, 36, 17, 4]})
ds = ColumnDataSource(vals)
p = figure(x_range=vals['weekday'])
p.vbar(x='weekday', width=0.75, top='Sales', source=ds)
labels = LabelSet(x='weekday', y='Sales', text='Sales', source=ds,
level='glyph',
x_offset=5,
y_offset=5,
render_mode='canvas')
p.add_layout(labels)
show(p)
它没有给出任何错误,但它没有像我预期的那样在垂直条的顶部打印标签。这个错误是我把Bokeh从v1.2.0升级到v2.1.1后才出现的。
LabelSet是否只取x轴的数值?是否有解决方法可以将其用于带字符串的 x 轴?
正如 Eugene Pakhomov 在评论中所说,2.2.1 中存在关于分类坐标和标签的问题。它将在 2.3 中修复,但与此同时,您可以用它们的索引替换您的分类值,并且注释将按预期呈现。
import pandas as pd
from bokeh.models import LabelSet, ColumnDataSource, Range1d
from bokeh.plotting import output_notebook, figure, show
output_notebook()
vals = pd.DataFrame({'weekday': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
'Sales': [15, 25, 36, 17, 4],
'index' : range(5)}
)
ds = ColumnDataSource(vals)
# extend the y-range a bit more to give space to top label
p = figure(y_range=Range1d(0, 42), x_range=vals['weekday'], height=300)
p.vbar(x='weekday', width=0.75, top='Sales', source=ds)
labels = LabelSet(x='index', y='Sales', text='Sales', source=ds,
level='glyph',
x_offset=5,
y_offset=5,
render_mode='canvas')
p.add_layout(labels)
show(p)
我是 Bokeh 的新手(使用 v2.2.1),正在寻找标记每个数据点的解决方案。复制文档中显示的示例,我找不到 X 轴为字符串的解决方案,
import pandas as pd
from bokeh.models import LabelSet, ColumnDataSource
from bokeh.plotting import figure, show
output_file("weekday_val.html")
vals = pd.DataFrame({'weekday': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
'Sales': [15, 25, 36, 17, 4]})
ds = ColumnDataSource(vals)
p = figure(x_range=vals['weekday'])
p.vbar(x='weekday', width=0.75, top='Sales', source=ds)
labels = LabelSet(x='weekday', y='Sales', text='Sales', source=ds,
level='glyph',
x_offset=5,
y_offset=5,
render_mode='canvas')
p.add_layout(labels)
show(p)
它没有给出任何错误,但它没有像我预期的那样在垂直条的顶部打印标签。这个错误是我把Bokeh从v1.2.0升级到v2.1.1后才出现的。
LabelSet是否只取x轴的数值?是否有解决方法可以将其用于带字符串的 x 轴?
正如 Eugene Pakhomov 在评论中所说,2.2.1 中存在关于分类坐标和标签的问题。它将在 2.3 中修复,但与此同时,您可以用它们的索引替换您的分类值,并且注释将按预期呈现。
import pandas as pd
from bokeh.models import LabelSet, ColumnDataSource, Range1d
from bokeh.plotting import output_notebook, figure, show
output_notebook()
vals = pd.DataFrame({'weekday': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
'Sales': [15, 25, 36, 17, 4],
'index' : range(5)}
)
ds = ColumnDataSource(vals)
# extend the y-range a bit more to give space to top label
p = figure(y_range=Range1d(0, 42), x_range=vals['weekday'], height=300)
p.vbar(x='weekday', width=0.75, top='Sales', source=ds)
labels = LabelSet(x='index', y='Sales', text='Sales', source=ds,
level='glyph',
x_offset=5,
y_offset=5,
render_mode='canvas')
p.add_layout(labels)
show(p)