Bokeh在Datatable中不会显示字符串换行符

时间:2016-03-11 20:20:49

标签: jupyter bokeh

我试图使用Bokeh显示一个字符串表(我已经在vplot + tabs中使用了散景图,并且想要在vplot中也有一个数据表)。

我的字符串是多线的,通过' \ n'字符,但在尝试在Bokeh DataTable中显示这些字符时,会删除换行符。有什么方法可以避免这种情况吗?

jupyter python3笔记本中的示例代码:

import bokeh
from bokeh.plotting import figure, output_notebook, show, vplot
from bokeh.io import output_file, show, vform
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, StringFormatter, TableColumn

output_notebook()


table_data = ColumnDataSource(dict(strings=['[ -1.23456, \n \
7.89012, \n \
3.456789 \n \
 ]', \
   '[ -1.23456, \n \
7.89012, \n \
3.456789 \n \
 ]'] 
))
columns = [TableColumn(field="strings", title="Strings", formatter=StringFormatter(text_color='#BB0000')) ]
tableplot = DataTable(source=table_data, columns=columns)

show(vform(tableplot))    

这产生如下: enter image description here

(注意:此示例代码也位于https://github.com/seltzered/Bokeh-multiline-datatable-demo

环境:Python 3.5,Jupyter 1.0 / Notebook 4.1.0,散景0.11.1

小更新:尚未解决,但意识到表/ slickgrid的web布局似乎设置了硬高度值(25px /行)和后续行的偏移,所以我认为这是预期的局限性。

2 个答案:

答案 0 :(得分:1)

我尝试使用HTMLTemplateFormatter,但遇到了你提到的同一个问题。这只显示每个数组的第一行:

table_data = ColumnDataSource(dict(strings=['[ -1.23456, \n \
7.89012, \n \
3.456789 \n \
 ]', \
   '[ -1.23456, \n \
7.89012, \n \
3.456789 \n \
 ]'] 
))
columns = [
    TableColumn(field="strings", 
                title="Strings", 
                formatter=HTMLTemplateFormatter(template='<pre><%= value %></pre>')) ]
tableplot = DataTable(source=table_data, columns=columns)
show(vform(tableplot))

答案 1 :(得分:0)

问题似乎不是由于散景,更多的是滑板的限制 - 有一些变通办法/滑板式叉子贴出那里真正寻找有多线网格的解决方案,但没有看到任何东西正式合并。

查看有关slickgrid的相关问题:Is variable rowheight a possibility in SlickGrid?

https://groups.google.com/forum/#!topic/slickgrid/jvqatSyH-hk