python Bokeh:DataTable单元格样式

时间:2017-05-13 15:44:57

标签: bokeh

我想为我的dataTable单元格设置一个自定义格式化程序。

比方说,例如,我希望标题列字体样式为粗体。

from bokeh.plotting import show
from bokeh.models.sources import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn

if __name__ == '__main__':

    source = ColumnDataSource(data = dict(hello = ["one", "two", "three"]))

    c0 = TableColumn(field="hello", 
                     title= "TITLE IN BOLD?")

    ds = DataTable(source=source,
                   columns = [c0])

    show(ds) 

在BokehJS中有一种简单的方法吗?

由于

1 个答案:

答案 0 :(得分:1)

使用HTMLTemplateFormatter可以完成工作。这允许将列中的所有单元格格式化为代码,以便您可以在任何单元格中添加粗体标签或其他任何内容。

注意:如果你使用散景版0.12.5 不幸的是他们已经删除了下划线js以便绕过它(第一块丑陋的代码),你可以使用这个github问题的解决方法:https://github.com/bokeh/bokeh/issues/6207。或者在输出html文件中包含underscorejs / lodash,即<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>

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

class MyHTMLFormatter(HTMLTemplateFormatter):
    __javascript__ = ["https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"]
    __implementation__ = """
import {HTMLTemplateFormatter} from "models/widgets/cell_formatters"
export class MyHTMLFormatter extends HTMLTemplateFormatter
  type: 'MyHTMLFormatter'
"""



if __name__ == '__main__':

    source = ColumnDataSource(data = dict(hello = ["<b>one</b>", "two", "three"]))
    formatter = HTMLTemplateFormatter(template='<code><%= value %></code>')
    c0 = TableColumn(field="hello", 
                     title= "<b>TITLE IN BOLD?</b>", formatter=formatter)

    ds = DataTable(source=source,
                   columns = [c0])

    show(ds)