拜。
我正在使用散景服务器(版本0.12.13)开发一个应用程序,我有一个包含多个列的DataTable小部件。其中一个是开放日问题的衡量标准,另一个是估计关闭此类问题的天数。
在某些情况下,问题开启的天数超过了预计的金额,如果发生这种情况,我想将估计的天数列为红色。
我尝试过使用“widget.HTMLTemplateFormatter”,但我还没想出如何访问另一个列值进行比较,并决定是否将单元格绘制成红色。
有谁知道怎么解决这个问题?
答案 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?。