我试图使用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))
(注意:此示例代码也位于https://github.com/seltzered/Bokeh-multiline-datatable-demo
环境:Python 3.5,Jupyter 1.0 / Notebook 4.1.0,散景0.11.1
小更新:尚未解决,但意识到表/ slickgrid的web布局似乎设置了硬高度值(25px /行)和后续行的偏移,所以我认为这是预期的局限性。
答案 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