Jupyter Bokeh报错E-1001:Glyph渲染器引用不存在的列名‘color’
解决Bokeh GlyphRenderer报错E-1001:color列不存在的问题
这个报错我太熟悉了——核心问题出在你设置Oval的fill_color时,直接写了"color",但Bokeh会把这个字符串当成字面量颜色值(比如"red"这类固定颜色),而不是去你的数据源里找名为color的列。
修正方法很直接,两种方式任选:
方式1:用field()函数明确指定数据源字段(推荐)
先导入field模块,再把fill_color的值换成field('color'),告诉Bokeh去数据源里读取对应列的颜色:
from bokeh.models import GlyphRenderer, Oval, ColumnDataSource, field # 你的数据源 source = ColumnDataSource(data={ 'index': [0, 1, 2, 3, 4, 5, 6, 7], 'color': ['#3288bd', '#66c2a5', '#abdda4', '#e6f598', '#fee08b', '#fdae61', '#f46d43', '#d53e4f'] }) # 修正后的Oval配置 oval = Oval(height=0.1, width=0.2, fill_color=field('color')) # 创建渲染器并绑定数据源 renderer = GlyphRenderer(data_source=source, glyph=oval)
方式2:用字典格式指定字段
如果不想额外导入模块,也可以直接用字典来声明字段关联:
oval = Oval(height=0.1, width=0.2, fill_color={'field': 'color'})
最后再做两个小检查:
- 确认你的
GlyphRenderer确实绑定了包含color列的ColumnDataSource(别漏了数据源关联这一步) - 检查列名拼写是否完全一致——Bokeh对大小写敏感,
Color和color会被当成两个不同的列
这样修改后,Bokeh就能正确读取你数据源里的颜色值,不会再报列不存在的错误了。
内容的提问来源于stack exchange,提问作者holdenweb
相关产品推荐
相关产品推荐

