Я пытаюсь создать разрывы строк внутри категориальных меток оси X с очень длинными строками, в точности как этот вопрос . Там есть ответ на вопрос, но у меня проблемы с его работой.
Часть ответа на языке Python выглядит следующим образом:
main.py
from bokeh.plotting import ColumnDataSource, figure
from bokeh.models import LabelSet, FixedTicker
from bokeh.io import curdoc, show
factors = ["Some very long text string\nthat has now been cut\na",
"Some very long text string\nthat has now been cut\nb"]
y = [50, 40]
# arbitrary placeholders which depends on the length and number of strings
x = [0, 2]
x_label = [0.65, 2.65] # This is offset is based on the length of the string
y_label = [-2, -2] # offset under the plot
source = ColumnDataSource(
data=dict(factors=factors, x=x, y=y, x_label=x_label, y_label=y_label))
p = figure(x_range=(-1, 3), y_range=(0, 52))
p.circle(x='x', y='y', size=15, fill_color="orange", source=source)
p.xaxis.ticker = FixedTicker(ticks=x)
p.xaxis.major_label_text_font_size = '0pt' # turn off x-axis tick labels
# p.xaxis.major_tick_line_color = None # turn off x-axis major ticks
p.xaxis.minor_tick_line_color = None # turn off x-axis minor ticks
labels = LabelSet(x='x_label', y='y_label', text='factors', source=source,
level='overlay', render_mode='css', text_align='center')
p.add_layout(labels)
curdoc().add_root(p)
CSS часть ответа выглядит следующим образом:
styles.css
.bk-annotation-child {
white-space: pre-wrap;
text-align: center;
}
Хотя у меня достаточно опыта работы с Python, у меня нет опыта работы с CSS. Как использовать часть файла CSS?
Полагаю, что это как-то связано с render_mode='css'
частью LabelSet
, но прямой ссылки на styles.css нет. Должен ли он быть в определенном каталоге?