Bokeh DataTable从版本1.0.4开始不更新行高

时间:2019-09-20 12:43:01

标签: python bokeh

我正在使用bokeh datable表显示熊猫数据框,但显示错误。由于某种原因,单元格文本在每个单元格中都被下推。此行为在v.1.0.4中很好,但此后出现。

代码是:

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

example_df = pd.DataFrame.from_dict(data={'x':[0]*6, 
         'y':[0, 1, 0, 1, 0, 1],
         'color':['blue', 'red', 'blue', 'green', 'blue', 'green']})
source = ColumnDataSource(example_df)

template="""
            <p style="font-size:18px;
                color:<%= 
                (function colorfromint(){
                    if (color == 'green')
                        {return('green')}
                    }()) %>;"> 
                <%= value %>
            </p>
         """

formatter =  HTMLTemplateFormatter(template=template)

columns = [
        TableColumn(field="x", formatter=formatter,
                    title='<p style="font-size:160%;"> Field 1 </p>'),
        TableColumn(field="y", formatter=formatter, 
                    title='<p style="font-size:160%;"> Field 2 </p>'),
    ]

data_table = DataTable(source=source, columns=columns, width=1200, height=800, index_position = None)

show(data_table)

错误的输出是 Table using bokeh v1.0.4

而正确的输出是 Behaviour after v1.0.4

1 个答案:

答案 0 :(得分:1)

您的代码可以将<p>元素替换为<span>元素。

template="""
<span style="font-size:18px;
    color:<%=
    (function colorfromint(){
        if (color == 'green')
            {return('green')}
        }()) %>;">
    <%= value %>
</span>
"""

formatter =  HTMLTemplateFormatter(template=template)

columns = [
    TableColumn(field="x", formatter=formatter,
                title='<span style="font-size:160%;"> Field 1 </span>'),
    TableColumn(field="y", formatter=formatter,
                title='<span style="font-size:160%;"> Field 2 </span>'),
]

enter image description here

我不确定样式更改的根本原因是什么,但是无论如何我都认为<span>是更好的选择。