Bokeh 库:W-1001 (NO_DATA_RENDERERS):绘图没有数据渲染器:

问题描述 投票:0回答:1

我正在尝试使用散景库与小部件进行交互,但是我不断收到此错误

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()

这里可能出现什么问题?

python bokeh
1个回答
0
投票

要重现并理解您的错误,请参阅下面三行

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)
© www.soinside.com 2019 - 2024. All rights reserved.