我想为我的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中有一种简单的方法吗?
由于
答案 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)