2015-03-18 2 views
3

У меня есть несколько кривых (разных цветов), нанесенных на один и тот же рисунок, и хотелось бы расширить соответствующие цветные линии в легенде, чтобы их легче было отличить при проецировании на большой экран.Как изменить размер меток в легенде Боке в python?

я могу получить доступ к свойствам легенды штрафа, например, размера шрифта текста этикетки легенды с:

p1.legend.label_text_font_size = "15pt" 

где p1 фигура в вопросе. Проблема в том, что я не знаю, что означает термин «цветные линии» в легенде и, к сожалению, relevant section в документах пуст.

ответ

3

Вы можете просмотреть исходный код на GitHub

только поиск хит для 'label_text_font_size' в этом файле: -

bokeh/bokehjs/src/coffee/renderer/annotation/legend.coffee 

и прокрутите вниз до Legend класса (строка 113 на момент написания это), то вы можете увидеть атрибуты класса. В настоящее время они являются: -

display_defaults: -> 
 
return _.extend {}, super(), { 
 
level: 'overlay' 
 
border_line_color: 'black' 
 
border_line_width: 1 
 
border_line_alpha: 1.0 
 
border_line_join: 'miter' 
 
border_line_cap: 'butt' 
 
border_line_dash: [] 
 
border_line_dash_offset: 0 
 
label_standoff: 15 
 
label_text_font: "helvetica" 
 
label_text_font_size: "10pt" 
 
label_text_font_style: "normal" 
 
label_text_color: "#444444" 
 
label_text_alpha: 1.0 
 
label_text_align: "left" 
 
label_text_baseline: "middle" 
 
glyph_height: 20 
 
glyph_width: 20 
 
label_height: 20 
 
label_width: 50 
 
legend_padding: 10 
 
legend_spacing: 3 
 
orientation: "top_right" 
 
datapoint: null 
 
}

.. ни один из них не выделяются как свойство, которое вы хотите, чтобы она не может быть возможным, чтобы изменить его, но вы хотели бы иметь люфт ?

NB Я не думаю, что все свойства имеют сеттеров, так что вы, возможно, придется установить их, используя что-то вроде этого: p.legend.__setattr__('label_text_color', "#FF0000")

NB Bokeh написано в CoffeeScript, которые я не имею никакого опыта, так это может все быть бесполезным.

0

По Bokeh 0.12.6, это невозможно. Легенды автоматически используют точно такие же визуальные свойства (например, цвет, размер) той вещи, которую они представляют. Чтобы сделать линию в легенде толще, вам нужно будет сделать линию самой толстой.

Будучи в состоянии отвергнуть то, может быть разумный запрос, я призываю вас сделать вопрос о GitHub, чтобы обсудить предложение функции:

https://github.com/bokeh/bokeh/issues

1

Это glyph_height и glyph_width свойства. Протестировано это на диаграмме рассеяния, они по умолчанию установлены соответственно 20 и 20. Вы можете сделать их больше, когда вы строите пункт Легенда:

legend = Legend(..., 
       glyph_height=30, 
       glyph_width=30, 
       ...) 

К сожалению, я попытался установить его после того, как легенда была уже построена, и это, кажется, не работает ... Я могу ошибаться, хотя.

Редактировать: Также я использую Bokeh 0.12.7