如何更改 python 散景图例中标签的大小?

How do you change size of labels in the Bokeh legend in python?

我在同一张图中画了几条曲线(不同颜色),想加宽图例中相应的彩色线条,以便在投影到大屏幕上时更容易区分。

我可以很好地访问图例的属性,例如图例的标签文本字体大小:

p1.legend.label_text_font_size = "15pt"

其中 p1 是有问题的数字。问题是我不知道图例中 "coloured lines" 的术语是什么,遗憾的是文档中的 relevant section 是空的。

您可以在GitHub

上查看源代码

'label_text_font_size' 的唯一搜索结果在此文件中:-

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

并向下滚动到 Legend class(撰写本文时的第 113 行),然后您可以看到 class 属性。目前他们是:-

 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
}

.. none 其中脱颖而出成为您想要的 属性,因此可能无法更改它但您可能想玩一玩?

注意,我不认为所有属性都有设置器,因此您可能必须使用如下方式设置它们:p.legend.__setattr__('label_text_color', "#FF0000")

NB Bokeh 是用我没有经验的 CoffeeScript 编写的,所以这可能 所有 都没有用。

也许这会有所帮助:

http://docs.bokeh.org/en/0.10.0/docs/user_guide/styling.html#id4

应该有效的命令....只需调整您的尺寸:

p.legend.label_text_font_size = '30pt'

从 Bokeh 0.12.6 开始,这是不可能的。图例会自动使用与它们所代表的事物完全相同的视觉属性(例如颜色、大小宽度)。因此,要使图例中的线条更粗,您需要使线条本身更粗。

能够覆盖某些内容可能是一个合理的要求,我强烈建议您在 GitHub 上提出问题以讨论功能提案:

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

这是 glyph_heightglyph_width 属性。在散点图上对此进行了测试,默认情况下它们分别设置为 20 和 20。您可以在构建图例项时将它们变大:

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

不幸的是,我尝试在图例构建完成后进行设置,但它似乎不起作用...不过我可能是错的。

编辑:此外,我正在使用 Bokeh 0.12.7

以下(由@ciornav 提议)在散景 0.13.0 中对我有用:

p.legend.label_text_font_size = '20pt'

如文档所述here

请小心放置此代码的位置。当它是例如在 p.figure() 和 p.line() 语句之间,它不会生效,因为它似乎被覆盖了。

将代码放在创建所有工件之后,p.show() 或 p.save().

之前

在当前版本的 Bokeh(1.2) 中,您可以使用以下方法更改图例中的对象大小:

p.legend.glyph_height = #some int
p.legend.glyph_width = #some int
p.show()

确保在绘制完所有几何图形后更改图例属性。