2017-03-11 54 views
2

根据单元格的文本内容,我想在散景中显示一个DataTable,单元格是红色还是橙色。带有条件着色单元格的散景DataTable

例如,如果单元格包含单词“错误”,那么该单元格显示为红色背景。 如果单元格包含单词“警告”,那么它是橙色的。

我相信我应该用[HTMLTemplateFormatter][1],但是怎么样?

我该怎么做?

感谢

回答

8

通过文档来看,你可以使用一个HTMLTemplateFormatter并强调JS格式化表格。有关详细信息,请参见http://bokeh.pydata.org/en/latest/docs/reference/models/widgets.tables.htmlhttp://underscorejs.org/#template。 我附加了一个基于整数值的格式示例,尽管您可以根据需要进行扩展。

注意:这基本上嵌入每个表格单元中的div,所以每个单元格周围仍然有一个小的白色边框。如果可能的话,您可以调整内部div的大小,或者设置父元素的样式。

更新:根据背景虚化的版本使用的是你可能需要包括lodash或HTML文档中强调JS即:<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>

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

dict1 = {'x':[0]*6,'y':[0,1,0,1,0,1]} 
source = ColumnDataSource(data=dict1) 

template=""" 
<div style="background:<%= 
    (function colorfromint(){ 
     if(value == 1){ 
      return("blue")} 
     else{return("red")} 
     }()) %>; 
    color: white"> 
<%= value %></div> 
""" 

formater = HTMLTemplateFormatter(template=template) 
columns = [ 
    TableColumn(field="x", title="x"), 
    TableColumn(field="y", title="y",formatter=formater) 
] 

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

它的伟大工程!谢谢 – carmellose

+0

没问题。我认为如果你能清楚地设置好看起来更好的整个单元背景。 – Anthonydouc

+0

@Anonydouc你会如何引用父母为了改变背景颜色?我尝试使用jquery没有运气。也尝试调整内部div与没有运气 – asdf