对于 Bokeh 的更新版本(0.12.14 左右),这更加简单。固定刻度可以直接作为“ticker”值传递,并且可以提供主要的标签覆盖来显式地为特定值提供自定义标签:
from bokeh.io import output_file, show
from bokeh.plotting import figure
p = figure()
p.circle(x=[1,2,3], y=[4,6,5], size=20)
p.xaxis.ticker = [1, 2, 3]
p.xaxis.major_label_overrides = {1: 'A', 2: 'B', 3: 'C'}
output_file("test.html")
show(p)
注意:以下答案的旧版本指的是 bokeh.charts API,该 API 已被弃用并删除
从最近的 Bokeh 版本(例如 0.12.4 或更新版本)开始,现在使用 FuncTickFormatter 更容易实现这一点:
import pandas as pd
from bokeh.charts import Bar, output_file, show
from bokeh.models import FuncTickFormatter
skills_list = ['cheese making', 'squanching', 'leaving harsh criticisms']
pct_counts = [25, 40, 1]
df = pd.DataFrame({'skill':skills_list, 'pct jobs with skill':pct_counts})
p = Bar(df, 'index', values='pct jobs with skill', title="Top skills for ___ jobs", legend=False)
label_dict = {}
for i, s in enumerate(skills_list):
label_dict[i] = s
p.xaxis.formatter = FuncTickFormatter(code="""
var labels = %s;
return labels[tick];
""" % label_dict)
output_file("bar.html")
show(p)