You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复Bokeh散点图中的坐标轴(刻度)间距问题

解决Bokeh分类X轴均匀间距的问题

这个问题的核心是你给x_range传入了包含重复值的列表,Bokeh会把列表里的每一项都当作独立的分类刻度,所以才会出现X轴间距被重复值挤占的情况。要实现均匀间距,只需要给x_range传入去重后的唯一分类值列表,同时保持它们的出现顺序就可以了,完全不用手动指定刻度位置。

修改后的示例代码

import pandas
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource

days =['Mon','Mon','Mon', 'Tues', 'Tues', 'Weds','Weds','Weds','Weds']
vals = [1,3,5,2,3,6,3,2,4]
df = pandas.DataFrame({'Day': days, 'Values':vals})
source = ColumnDataSource(df)

# 关键修改:传入去重且保持顺序的唯一分类值
unique_days = list(dict.fromkeys(df['Day']))  # 也可以用df['Day'].unique().tolist()(pandas 1.0+版本会保持原始顺序)
p = figure(x_range=unique_days)
p.circle(x='Day', y='Values', source=source)
show(p)

原理说明

  • 当你传入x_range=df['Day'].tolist()时,列表里包含3个Mon、2个Tues、4个Weds,Bokeh会生成9个刻度位置,重复的分类会被并排显示,自然导致间距不均匀。
  • 传入去重后的唯一分类列表后,Bokeh会为每个唯一分类分配一个均匀的位置,不管每个分类对应多少个Y值,所有X轴刻度都会保持相等的间距,和你绘制单个X-Y值对时的效果完全一致。

内容的提问来源于stack exchange,提问作者JeremyD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:33:42