python 如何在散景图中引用特定的矩形?

i5desfxk  于 2023-04-04  发布在  Python
关注(0)|答案(1)|浏览(105)

我正在绘制一个带有装饰的图,在图上绘制矩形以突出显示某些部分。
我想为绘制在顶部的矩形找到一个引用,这样我就可以移动它,与绘制的数据无关。我似乎不知道如何做到这一点。如果有多个字形,我如何能够引用每个字形?
假设我有许多高亮矩形覆盖在我的图上,而我的图是用矩形绘制的,我怎么知道要找到其中一个高亮矩形呢?

x = [x*0.005 for x in range(0, 200)]
y = x      

source = ColumnDataSource(data=dict(x=x, y=y))

plot = figure(width=400, height=400, x_range=(0, 1), y_range=(0, 1))

plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)

# the points to be plotted
x1 = .30
y1 = .30
w1 = .40
h1 = .20
 
# plotting the graph
plot.rect(x1, y1,w1,h1)

slider = Slider(start=0.1, end=4, value=1, step=.1, title="power")
slider.js_link('value', plot,'x1')
layout = column(slider, plot)

show(layout)

js_link调用在plot结构下的Rect中找不到x1。plot.rect当然不起作用。
我如何引用rect?

pgky5nke

pgky5nke1#

正如bigreddot在评论中提到的,你可以在plot对象的渲染器列表中寻址rect。这取决于你添加渲染器的顺序。要将rectx值连接到滑块值,你可以使用plot.renderers[1].glyph
下面的示例为您提供了通过将中心更改为滑块来移动矩形的机会。

from bokeh.plotting import show, figure, output_notebook
from bokeh.models import ColumnDataSource, Slider
from bokeh.layouts import column
output_notebook()

x = [0, 1]
y = [0, 1]      

source = ColumnDataSource(data=dict(x=x, y=y))

plot = figure(width=400, height=400, x_range=(0, 1), y_range=(0, 1))

plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)

# the points to be plotted
x1 = .30
y1 = .30
w1 = .40
h1 = .20
 
# plotting the graph
plot.rect(x1, y1,w1,h1)

slider_x = Slider(start=0.1, end=1, value=x1, step=.1, title="x")
slider_x.js_link('value', plot.renderers[1].glyph,'x')
slider_y = Slider(start=0.1, end=1, value=y1, step=.1, title="y")
slider_y.js_link('value', plot.renderers[1].glyph,'y')
layout = column(slider_x, slider_y, plot)

show(layout)

相关问题