Bokeh图表如何动态切换x_range为FactorRange?分类轴图表为空求助
散点图X轴为分类列时显示为空的解决方法
问题排查与修复步骤
- 确保数据格式匹配:设置
FactorRange后,散点图的x字段必须是字符串类型的分类值,不能是数值编码或其他类型。要保证x_data里的每个值都存在于x_data_unique_values列表中,无格式差异(比如大小写、空格)。 - 显式配置分类轴:初始化figure时直接指定
x_range为FactorRange,同时明确x_axis_type为分类类型,绘制散点时传入正确的分类数据:from bokeh.models import FactorRange from bokeh.plotting import figure # 提取唯一分类值并排序(可选,保证显示顺序) x_data_unique_values = sorted(list(set(x_data))) # 初始化带分类X轴的图表 my_figure = figure(x_range=FactorRange(factors=x_data_unique_values), x_axis_type="categorical") # 绘制散点,确保x传入的是字符串分类数据 my_figure.circle(x=x_data, y=y_data, size=8) - 校验数据完整性:确认
x_data_unique_values非空,且x_data与y_data长度一致,无缺失值导致数据不匹配。 - 避免范围被覆盖:检查代码中是否有后续逻辑重置了x_range,确保
FactorRange的设置是最终生效的配置。
快速调试技巧
- 打印
x_data_unique_values和x_data的前5个值,验证分类值的格式完全一致。 - 手动指定固定分类值测试:
如果此配置能显示图表,说明你的my_figure.x_range = FactorRange(factors=["分类A", "分类B", "分类C"])x_data_unique_values存在格式或数据问题。
内容的提问来源于stack exchange,提问作者Yaming He
相关产品推荐
相关产品推荐

