改变Bokeh标签注释的文本大小

5
我正在为Bokeh柱状图添加标签注释:

labels = LabelSet(x='roomsavailable', y='area', text='roomsavailable', level='glyph',
        x_offset=-15, y_offset=-13.5, source=source, render_mode='canvas')

p.add_layout(labels)

有人知道是否可以调整文本的大小吗?
4个回答

5

text_font_size接受一个字符串值,例如YOUR_FONT_SIZE = '10pt'


4
您可以添加以下代码:
p.xaxis.axis_label_text_font_size = '15pt'
p.yaxis.axis_label_text_font_size = '15pt'

3

在文档中,它描述了text_font_size属性:

文本的字体大小值。

因此,请尝试这样做:

YOUR_FONT_SIZE = 10
labels = LabelSet(x='stock',
                  y='area',
                  text='roomsavailable',
                  text_font_size=YOUR_FONT_SIZE,
                  level='glyph',
                  x_offset=-15,
                  y_offset=-13.5,
                  source=source,
                  render_mode='canvas')

这个不起作用。你需要将YOUR_FONT_SIZE变量输入为一个字符串,并且带有单位,就像@Johnathan Huggett的答案中所示,比如'10pt'。 - Sahil M

2
这是对@MarkWeston已有答案的补充。让我们看下面这个最简示例:
from bokeh.io import show
from bokeh.models import ColumnDataSource, LabelSet
from bokeh.plotting import figure

p = figure()

source = ColumnDataSource(dict(x=[x for x in range(1,8)], 
                               y=[1]*7, 
                               names=[str(x) for x in range(1,8)]
                              )
                         )

p = figure(x_range=(0, 8), y_range=(0, 2), plot_height=100, tools='' )

labels = LabelSet(x='x', y='y', text='names', level='overlay', text_align='center',
              x_offset=0, y_offset=-8, source=source, render_mode='canvas')
p.add_layout(labels)

p.circle(x='x', y='y', radius=0.3, alpha=0.3, source=source)

p.xgrid.visible = False
p.ygrid.visible = False
p.xaxis.visible = False
p.yaxis.visible = False

show(p)

这是示例的输出。
现在我们可以按照 @MarkWeston 的答案预先设置所需的参数。如果创建一个LabelSet,则可以传递LabelSet文档中解释的所有参数。
但是,如果您想在调用p.add_layout()之后更改设置,则还有第二种方法。
函数p.add_layout(labels)带有一个名为place的参数。有效值为leftrightabovebelow和默认值center。有关详细信息,请参见add_layout文档
为简化起见,假设您使用默认值center调用add_layout()函数。现在我们需要知道LabelSet在包含在p.center中的列表的哪个索引处。
我们可以通过运行以下命令来获取此信息:
[i for i, item in enumerate(p.center) if isinstance(item, LabelSet)]
>>> [2]

这将返回“2”。请注意,0和1处有不可见的网格。

现在我们可以通过调用以下行来更改LabelSet的参数设置

p.center[2].text_color = {'value':'#0000ff'}
p.center[2].text_size = {'value':'11pt'}
p.center[2].text_size = 'TimesNewRoman'

还有许多其他的。

如果您使用show(p)重新绘制图形,您可以看到更改,并且它看起来像这样


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接