如何根据其他列值格式化散景DataTable单元格?

时间:2018-01-04 13:20:29

标签: python bokeh

拜。

我正在使用散景服务器(版本0.12.13)开发一个应用程序,我有一个包含多个列的DataTable小部件。其中一个是开放日问题的衡量标准,另一个是估计关闭此类问题的天数。

在某些情况下,问题开启的天数超过了预计的金额,如果发生这种情况,我想将估计的天数列为红色。

我尝试过使用“widget.HTMLTemplateFormatter”,但我还没想出如何访问另一个列值进行比较,并决定是否将单元格绘制成红色。

有谁知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以在下划线js代码中定义javascript函数,以有条件地为每个单元格着色。可以访问链接到表的数据源中的每个字段。

from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn, HTMLTemplateFormatter
from bokeh.io import show

dict1 = {'estd':[1]*6,
         'actd':[1, 1, 1, 2, 2, 2],
         'z'   :[3, 3, 3, 3, 3, 3]}

source = ColumnDataSource(data=dict1)

template="""
<b><div style="background:<%= 
    (function colorfromint(){
        if(actd > estd){
            return("Red")
        }
        else{
            return("White")
        }
     }()) %>;">
<%= (value).toFixed(1) %></div></b>
"""

formater =  HTMLTemplateFormatter(template=template)
columns = [
    TableColumn(field="estd", title="Estimated Days"),
    TableColumn(field="actd", title="Actual days",formatter=formater),
    TableColumn(field="z", title="z")
]

data_table = DataTable(source=source, columns=columns, width=800)

show(data_table)

如果数据没有改变,您可以使用python代码定义颜色,请参阅此处的第二个示例:How do I adjust number format in bokeh data table using HTMLTemplateFormatter?