散景图填充半圆
Bokeh plot filled semicircle
我想在散景中绘制一个填充的半圆来显示填充管道的模型 (https://www.engineersedge.com/fluid_flow/partially_full_pipe_flow_calculation/image003.png) where, based on user input, the water level changes. I looked at the available glyphs (https://docs.bokeh.org/en/latest/docs/reference/models/glyphs.html),但找不到合适的模型。我希望我可以填充弧形字形,但似乎不可能。
如有任何建议,我们将不胜感激。
没有内置的东西可以做到这一点。查看您链接的图表,您可以组合一个 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)
如果这些需要以某种方式更新,您可能希望将其包装在一些辅助函数中以生成正确的数据值和 update ColumnDataSources for the existing glyphs。最佳做法是尽可能预先绘制一次字形,然后在需要更改时仅更新其数据源。
一些最后的说明:
你需要 match_aspect=True
来确保 "pixel space" 和 "data space" 中的长宽比相同,这是确保圆实际上是圆的必要条件"data space"
match_aspect
要求您使用默认的自动范围。如果您设置明确的范围值,Bokeh 相信您知道您想要什么,即使这会弄乱外观。
这是单个字形的奇怪组合...自动范围本身并不能很好地处理它们。我在圆圈周围添加了一个不可见的矩形来帮助它。
我想在散景中绘制一个填充的半圆来显示填充管道的模型 (https://www.engineersedge.com/fluid_flow/partially_full_pipe_flow_calculation/image003.png) where, based on user input, the water level changes. I looked at the available glyphs (https://docs.bokeh.org/en/latest/docs/reference/models/glyphs.html),但找不到合适的模型。我希望我可以填充弧形字形,但似乎不可能。
如有任何建议,我们将不胜感激。
没有内置的东西可以做到这一点。查看您链接的图表,您可以组合一个 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)
如果这些需要以某种方式更新,您可能希望将其包装在一些辅助函数中以生成正确的数据值和 update ColumnDataSources for the existing glyphs。最佳做法是尽可能预先绘制一次字形,然后在需要更改时仅更新其数据源。
一些最后的说明:
你需要
match_aspect=True
来确保 "pixel space" 和 "data space" 中的长宽比相同,这是确保圆实际上是圆的必要条件"data space"match_aspect
要求您使用默认的自动范围。如果您设置明确的范围值,Bokeh 相信您知道您想要什么,即使这会弄乱外观。这是单个字形的奇怪组合...自动范围本身并不能很好地处理它们。我在圆圈周围添加了一个不可见的矩形来帮助它。