我正在尝试使用散景库与小部件进行交互,但是我不断收到此错误
W-1001 (NO_DATA_RENDERERS): Plot has no data renderers: Figure(id='41f32f65-22f9-4ff7-b4ea-54f83ec17b1f', ...)
我想做的是获得一个带有两个小部件的交互式绘图,其中一个小部件的值取决于另一个小部件,当我运行脚本时,我收到上述错误和一个空图,但是小部件似乎正在工作好的,下面是我运行的 python 脚本
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, Select, HoverTool, Div
from bokeh.layouts import gridplot
def main():
data = loc_ds[['Region', 'SubRegion', 'Date', 'change']]
source = ColumnDataSource(data)
p = figure(
x_axis_label='Date',
y_axis_label='Count',
title='Data Plot'
)
hover = HoverTool()
hover.tooltips = [
('Region', '@region'),
('Sub Region', '@sub_region'),
('Count', '@value')
]
p.add_tools(hover)
region_select = Select(title='Region', value='', options=list(data['Region'].unique()))
sub_region_select = Select(title='Sub Region', value='', options=list(data['SubRegion'].unique()))
def update_plot(attr, old, new):
region = region_select.value
sub_region = sub_region_select.value
if region == '' or sub_region == '':
p.title.text = 'Data Plot'
p.x_range.start = undefined
p.x_range.end = undefined
p.renderers = []
else:
p.title.text = f'Data Plot for {region} - {sub_region}'
p.x_range.start = source.data[source.data['Region'] == region]['Date'].min()
p.x_range.end = source.data[source.data['Region'] == region]['Date'].max()
p.line('Date', 'value', source=source[source.data['SubRegion'] == subregion], line_width=2)
region_select.on_change('value', update_plot)
sub_region_select.on_change('value', update_plot)
layout = gridplot([[region_select, sub_region_select], [p]])
show(layout)
if __name__ == '__main__':
main()
这里可能出现什么问题?
要重现并理解您的错误,请参阅下面三行
from bokeh.plotting import figure, show
p = figure()
show(p)
这也引发了警告
警告:bokeh.core.validation.check:W-1000(MISSING_RENDERERS):绘图没有渲染器:figure(id ='p1001',...)
换句话说,此警告告诉您没有可显示的数据。
要消除此警告并查看某些内容,请添加类似
circle
的渲染器。有许多不同的选择供您选择。请参阅图文档中的列表或遵循第一步指南。
工作最小示例
from bokeh.plotting import figure, show
p = figure()
p.circle(x=[1,2,3], y=[1,2,3])
show(p)