有没有办法用作输入,例如,圆圈是基于x坐标输入数据的坐标字形,输入为y坐标图表顶部或底部的像素?
有点像matplolib的混合变换?
或者,在像素坐标中转换数据坐标会很容易,但是我可以找到y_range
值?我试过了figure.y_range.start
,但它没有返回任何内容
答案 0 :(得分:3)
无法使用屏幕空间坐标直接定位字形。事实证明,太难以支持这一点以及所有作为Bokeh核心功能的热门测试机器。我能想象出两种可能的解决方法。
第一种是使用某种Annotation
。注释可以定位在屏幕坐标中(因为它们不参与命中测试)。目前还没有"圈"注释,但也许盒子或多边形注释将满足您的需求。 BoxAnnotation在用户指南中有一个部分,poly注释类似:
http://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html#box-annotations
或者,您可以创建添加第二个"额外范围"这是屏幕(像素)单位的代理。其中一个例子就是:
http://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html#twin-axes
这是一个完整的例子:
from bokeh.models import Range1d
from bokeh.plotting import figure, show, output_file
output_file("foo.html")
p = figure()
# this will only work for fixed layout plots, and you'll have to tune
# the 'end' property to match your plot dimensions
p.extra_y_ranges = {"foo": Range1d(start=0, end=520)}
p.circle([10, 20, 30], [20, 260, 500], size=10, y_range_name="foo")
show(p)
现在还有关于图形内部尺寸变化的回调。在可调整大小的情况下,您可以将其扩展为更强大/更复杂。为这些内部绘图维度添加回调的方法如下:
p.on_change("inner_width", some_callback)
p.on_change("inner_height", some_callback)
用于python(服务器)回调。使用js_on_change
进行CustomJS
回调。