Нет ничего встроенного, чтобы сделать это. Глядя на диаграмму, которую вы связали, вы можете объединить глиф wedge
(для части "pacman") и патч для заполнения остальных.
from bokeh.io import show
from bokeh.plotting import figure
from math import pi, sin, cos
p = figure(match_aspect=True)
p.wedge(x=0, y=0, radius=1, start_angle=-5*pi/4, end_angle=pi/4)
p.patch(x=[0, -cos(pi/4), cos(pi/4)], y=[0, sin(pi/4), sin(pi/4)])
p.circle(0, 0, radius=1, fill_color=None, line_color="black", line_width=3)
# hack: Bokeh does not yet auto-range this odd combination well
p.rect(0, 0, 2, 2, color=None)
show(p)
Если их нужно как-то обновить, вы, вероятно, захотите обернуть это в какую-нибудь вспомогательную функцию для генерации нужных данных. значения и обновляют ColumnDataSources для существующих глифов . Лучшая практика - рисовать глифы один раз, когда это возможно, а затем обновлять только их источники данных, если они нуждаются в изменении.
Пара заключительных замечаний:
вам нужно match_aspect=True
, чтобы обеспечить одинаковые соотношения сторон в «пространстве пикселей» и «пространстве данных», что необходимочтобы убедиться, что круг действительно является кругом в «пространстве данных»
match_aspect
, необходимо использовать автоматические диапазоны по умолчанию. Если вы устанавливаете явные значения диапазона, Боке доверяет вам, что вы хотите, даже если это портит аспект.
Это странная комбинация одиночных глифов ... автодиапазоны сами по себе не очень хороши. Я добавил невидимый прямоугольник вокруг круга, чтобы помочь ему.