其他分享
首页 > 其他分享> > 如何在Bokeh中仅展示evey第n个分类代码

如何在Bokeh中仅展示evey第n个分类代码

作者:互联网

两年前也有同样的问题.当时似乎不支持evey第n个分类代码.

https://stackoverflow.com/questions/34949298/python-bokeh-show-only-every-second-categorical-ticker

我的散景版是0.12.13.我想它现在得到了支持.

只需设置p.xaxis.ticker = [‘A’,’B,’C’]不起作用(抛出错误)

在我的dashbaord中,初始绘图大小是浏览器视图端口的四分之一,x轴上挤满了许多自动收报机和标签.所以我想只显示10个代码,然后在放大图时显示所有代码.

解决方法:

Bokeh没有内置任何东西来做这件事.你可以用custom extension完成一些事情:

from bokeh.models CategoricalTicker

JS_CODE = """
import {CategoricalTicker} from "models/tickers/categorical_ticker"

export class MyTicker extends CategoricalTicker
  type: "MyTicker"

  get_ticks: (start, end, range, cross_loc) ->
    ticks = super(start, end, range, cross_loc)

    # drops every other tick -- update to suit your specific needs
    ticks.major = ticks.major.filter((element, index) -> index % 2 == 0)

    return ticks

"""

class MyTicker(CategoricalTicker):
    __implementation__ = JS_CODE

p.xaxis.ticker = MyTicker()

请注意,上面定义的简单get_ticks不会处理嵌套类别等更复杂的情况.

标签:python,bokeh,ticker
来源: https://codeday.me/bug/20191003/1846064.html