У меня есть мультибар, построенный с помощью Bokeh, используя метод vbar glyph. Сюжет хорош, но когда я пытаюсь добавить метки, они «выталкиваются» за пределы рисунка и становятся нечитаемыми. Есть ли способ отрегулировать верхний отступ между глифом и рисунком?
Вот код, который я использую, если вы визуализируете его, проблема очевидна
categories = ['1', '2', '3', '4', '5']
sets = ['full', 'train', 'test']
data = {
'x' : categories,
'full' : full_dset_count,
'train' : train_dset_count,
'test' : test_dset_count,
'empty':['']*5
}
x = [ (cat, set_) for cat in categories for set_ in sets ]
counts = sum( zip( data['full'], data['train'], data['test'] ), () )
colors = ['#3cba54', "#f4c20d", "#db3236"]*5
full_p = sum(zip( round(data['full'], 4), data['empty'], data['empty']), ())
train_p = sum(zip( data['empty'], round(data['train'], 4), data['empty']), ())
test_p = sum(zip( data['empty'], data['empty'], round(data['test'], 4)), ())
source = ColumnDataSource(data=dict(
x=x, counts=counts, colors=colors,
full_p=full_p, train_p=train_p, test_p=test_p
))
plt = figure(
x_range=FactorRange(*x),
plot_height=500,
plot_width=900,
title="Distribuzione dei valori delle recensioni per l'insieme totale, di training e di test",
x_axis_label="Valore delle recensioni",
y_axis_label="Percentuale delle osservazioni"
)
plt.vbar(
x='x',
top='counts',
width=0.5,
color='colors',
source=source
)
plt.y_range.start = 0
plt.x_range.range_padding = 0.1
plt.xaxis.major_label_orientation = 1
plt.xgrid.grid_line_color = None
full_labels = LabelSet(
x='x', y='counts', text='full_p', level='glyph',
x_offset=-30, y_offset=0, source=source, render_mode='canvas'
)
train_labels = LabelSet(
x='x', y='counts', text='train_p', level='glyph',
x_offset=-20, y_offset=15, source=source, render_mode='canvas'
)
test_labels = LabelSet(
x='x', y='counts', text='test_p', level='glyph',
x_offset=-10, y_offset=30, source=source, render_mode='canvas'
)
plt.add_layout(full_labels)
plt.add_layout(train_labels)
plt.add_layout(test_labels)
show(plt)
Значения full_dset_count
, train_dset_count
и test_dset_count
почти идентичны , Чтобы воспроизвести проблему, можно использовать следующие значения: [ 7.23934138, 9.58753275, 18.32419776, 35.79029432, 29.05863379]