Python 如何对齐Bokeh TableColumn中的标题

Python 如何对齐Bokeh TableColumn中的标题,python,bokeh,Python,Bokeh,我使用Bokeh TableColumn在交互式仪表板中生成一个数据表。我想右对齐三个数字列。但是,标题保持左对齐,与列中的数字不对齐 有没有办法右对齐Bokeh TableColumn中的标题 我有搜索堆栈溢出,不相信这有一个解决方案。下面是我尝试(使用合成数据)做的一个最简单的工作示例 import pandas as pd import numpy as np from bokeh.plotting import figure, show, output_file, curdoc from

我使用Bokeh TableColumn在交互式仪表板中生成一个数据表。我想右对齐三个数字列。但是,标题保持左对齐,与列中的数字不对齐

有没有办法右对齐Bokeh TableColumn中的标题

我有搜索堆栈溢出,不相信这有一个解决方案。下面是我尝试(使用合成数据)做的一个最简单的工作示例

import pandas as pd
import numpy as np
from bokeh.plotting import figure, show, output_file, curdoc
from bokeh.layouts import layout, row, column, Spacer, widgetbox
from bokeh.models import ColumnDataSource, DataTable, TableColumn, DateRangeSlider, Slider, BoxAnnotation, HoverTool
from bokeh.models.widgets import NumberFormatter, DateFormatter, RangeSlider, Toggle, Button, CheckboxButtonGroup, Div

np.random.seed(10)
data = pd.DataFrame({
    'date':pd.date_range(start='1/1/2000', periods=200, freq='Q'),
    'x': np.random.choice(range(100),200)
})

data['qrtly'] = round(data['x'].pct_change(),4)
data['tty'] = round(data['x'].pct_change(periods=4),4)
source = ColumnDataSource(data)

columns = [
    TableColumn(field='date', title='', formatter=DateFormatter(format='%b-%Y')),
    TableColumn(field='x', title='levels', formatter=NumberFormatter(text_align='right')),
    TableColumn(field='qrtly', title='qrtly', formatter=NumberFormatter(format='0.00%',text_align='right')),
    TableColumn(field='tty', title='tty', formatter=NumberFormatter(format='0.00%',text_align='right'))
]

table = DataTable(source=source, columns=columns, width=635)

curdoc().add_root(table)

下面是一个使用css的方法:

为表指定一个css类:

table = DataTable(source=source, columns=columns, width=635, css_classes=["my-table"])
然后使用以下样式右对齐标高列:

.my-table .slick-header-column:nth-child(3) .slick-column-name{
    float:right !important;
}
可以使用Div添加样式

from bokeh.models.widgets import Div
table = DataTable(source=source, columns=columns, width=635, css_classes=["my-table"])
style = Div(text="""
<style>
.my-table .slick-header-column:nth-child(3) .slick-column-name{
    float:right !important;
}
</style>
""")
show(column(table, style))
来自bokeh.models.widgets导入Div
table=DataTable(source=source,columns=columns,width=635,css_classes=[“我的表”])
style=Div(text=”“”
.my table.slick标题列:第n个子项(3).slick列名{
浮子:对!很重要;
}
""")
显示(列(表格、样式))

你好,海瑞。我已尝试让您的解决方案工作,并将第二个代码段保存到一个名为my-table.css的文件中,该文件与python脚本位于同一文件夹中。但什么也没发生(标题仍然是左对齐的)。你能把你的答案扩大一点来帮助我解决这个问题吗?然后,我会接受答案并加以修正。