首页 文章

散景图 - 自定义分类刻度标签

提问于
浏览
0

我正在尝试在Python中为Bokeh图添加一个轴,在指定的位置使用刻度线并指定标签 .

我正在制作的情节是每日数据的集合,但我没有使用 x_axis_type="datetime" ,因为我不想为数据指定特定的年份 . 也就是说,我正在绘制1950 - 2015年的数据,但我希望轴只说"1 January",而不是"1-January-2000" .

最初我使用的是CategoricalAxis,但这会挤出标签,因为它为366个刻度中的每一个放置一个 . 我想将此减少到每个月大约12个刻度 .

我可以使用LinearAxis将刻度线放在我想要的位置,这是每个月的第一个日期 . 但是刻度标签是数字的,我想改用字符串标签 .

如何更改刻度标签以使用特定字符串?

# Remove default axis
p.xaxis.visible = False

# Add custom axis
ticker = FixedTicker()
ticker.ticks = first_day_of_month
xaxis = LinearAxis(ticker=ticker)
p.add_layout(xaxis, 'below')

第一次尝试使用标准的CategoricalAxis,x轴很拥挤:
Using CategoricalAxis. Crowded out x-axis

使用代码发布的第二次尝试,我想将数字更改为标签:
Custom LinearAxis. No labels on x-axis

编辑

DatetimeTickFormatter 没有立即有用,因为数据的源格式不是正确的日期 . x数据实际上是"mmdd"形式的字符串,例如"1230",这就是我首先使用CategoricalAxis的原因 .

使用 FuncTickFormatter 已经成功,如果有点麻烦 . 我正在使用下面的代码,基本上给出了我想要的内容 .

CustomFuncTickFormatter = FuncTickFormatter(code = '''
return {0: 'January', 366: '', 335: 'December', 305: 'November', 274: 'October', 244: 'September', 213: 'August', 182: 'July', 152: 'June', 121: 'May', 91: 'April', 60: 'March', 31: 'February'}
[tick]
''')

enter image description here

1 回答

  • 1

    您应该能够使用 x_axis_type="datetime"FixedTickerDatetimeTickFormatterdocumentation)的自定义实例,并将所有字段设置为 [%d %m] . 如果由于某种原因不起作用,您可以始终使用 FuncTickFormatterdocumentation) .

相关问题