如何在bokeh中嵌套类别的轴上使用自定义刻度标签?

问题描述

我试图建立一个垂直的散景堆积条形图,在x轴上嵌套类别。

我已经成功完成了绘图工作,但是我想在此轴上为类别使用自定义标签

我正在使用的代码如下:

from bokeh.io import output_notebook,show
output_notebook()
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource,FactorRange
from bokeh.models.annotations import BoxAnnotation
from bokeh.models.widgets import DaterangeSlider,Select
from bokeh.layouts import row,column

def bkapp(doc):

    # define controls
    # select: choose indicator from list
    select = Select(title="Indicateur",options=indicators,value='margin')
    # dateslider: filter data on date
    dateslider = DaterangeSlider(title='Filtre sur les dates',start=date(2017,7,3),end=date(2020,8,30),value=(date(2020,10),date(2020,30)),step=604800000)
    controls = [select,dateslider]

    # compute data source
    def compute_indicator(df,indicator):
        return(
            df.groupby(['origin2','seg2','seg3','orgacom'],observed=True,)[indicator]
               .sum()
               .unstack('origin2',fill_value=0.)
        )
    
    def select_data():
        date_range = dateslider.value
        selected = orders.reset_index().loc[
            (orders.reset_index().seg1 == 'Z3') &
            (orders.reset_index().date >= pd.to_datetime(date.fromtimestamp(date_range[0] / 1000))) &
            (orders.reset_index().date <= pd.to_datetime(date.fromtimestamp(date_range[1] / 1000)))
        ]
        return(selected)
    
    def update():
        indicator = select.value
        df = select_data()
        grouped = compute_indicator(df,indicator)
        source.data = ColumnDataSource.from_df(grouped)

    for control in controls:
        control.on_change('value',lambda attr,old,new: update())
    
    df = compute_indicator(select_data(),select.value)
    source = ColumnDataSource(data=df)
    
    p = figure(x_range=FactorRange(*list(df.index)))
    p.vbar_stack(df.columns,x='seg2_seg3_orgacom',source=source,width=.9,color=['red','green','blue','black'],legend_label=list(df.columns),)
    p.xaxis.major_label_orientation = 1
    p.yaxis.formatter = NumeralTickFormatter(format="0")
    
    doc.add_root(column(select,dateslider,p))

show(bkapp,notebook_url="http://devdm:8888")

代码创建了一个功能齐全的交互式图表(请参见下文),但我想重命名x轴上使用的类别。

是否有任何方法可以重命名类别(例如,“ Z4”,“ ZI”,“ 2BRE”,...),例如使用类似于{'Z4':'Restauration commerciale','ZI'的字典: “独立”,...}?还是建议直接在我的pandas DataFrame中计算它们(我宁愿避免)?

谢谢!

Bokeh plot output

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)