[英]Change the text size of Bokeh label annotations
我正在向 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)
有誰知道是否可以調整文本的大小?
在文檔中,它描述了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')
text_font_size 接受像 YOUR_FONT_SIZE = '10pt' 這樣的字符串值
您還可以添加以下代碼:
p.xaxis.axis_label_text_font_size = '15pt'
p.yaxis.axis_label_text_font_size = '15pt'
這是對@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
的參數。 有效值為left
、 right
、 above
、 below
和默認值center
。 有關更多信息,另請參閱add_layout的文檔。
為簡單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)
繪制圖形,您可以看到變化,它看起來像這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.