如何使用 Bokeh python 库通过自定义属性 link 散点图?
How to link scatter plots by a custom attribute with Bokeh python library?
我有两个使用方框 select 工具的散点图,并且 link 按 x 值计算。我正在尝试通过 ID 值 link 绘图。有没有一种简单的方法可以使用现有的 Bokeh API?
import numpy as np
from bokeh.plotting import figure, output_file, show, gridplot
from bokeh.models import ColumnDataSource
N = 100
max = 100
x = np.random.random(size=N) * max
y1 = np.random.random(size=N) * max
y2 = np.random.random(size=N) * max
id = np.random.random(size=N) * max
output_file("scatter.html")
source = ColumnDataSource(data=dict(x=x, y1=y1, y2=y2))
TOOLS="box_select"
left = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
left.circle("x", "y1", source=source, size=10, fill_color="black", line_color=None)
right = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
right.circle("x", "y2", source=source, size=10, fill_color="black", line_color=None)
p = gridplot([[left, right]])
show(p)
这两个图不是 "linked by x-coordinate":它只是看起来那样,因为您的点恰好在两个图中具有相同的 x 坐标。如果您为每个数据点分配两个不同的 x 坐标(x1
和 x2
),您会看到它们实际上是通过数据中的行号链接的 table (您不需要手动分配 id
):
import numpy as np
from bokeh.plotting import figure,output_notebook, show, gridplot
from bokeh.models import ColumnDataSource
output_notebook()
N = 100
max = 100
x1 = [0,10,20,30]
x2 = [50,20,10,70]
y1 = [10,10, 20, 20]
y2 = [30,0,30,0]
source = ColumnDataSource(data=dict(x1=x1, x2=x2, y1=y1, y2=y2))
TOOLS="box_select"
left = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
left.circle("x1", "y1", source=source, size=10, fill_color="black", line_color=None)
right = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
right.circle("x2", "y2", source=source, size=10, fill_color="black", line_color=None)
p = gridplot([[left, right]])
show(p)
我有两个使用方框 select 工具的散点图,并且 link 按 x 值计算。我正在尝试通过 ID 值 link 绘图。有没有一种简单的方法可以使用现有的 Bokeh API?
import numpy as np
from bokeh.plotting import figure, output_file, show, gridplot
from bokeh.models import ColumnDataSource
N = 100
max = 100
x = np.random.random(size=N) * max
y1 = np.random.random(size=N) * max
y2 = np.random.random(size=N) * max
id = np.random.random(size=N) * max
output_file("scatter.html")
source = ColumnDataSource(data=dict(x=x, y1=y1, y2=y2))
TOOLS="box_select"
left = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
left.circle("x", "y1", source=source, size=10, fill_color="black", line_color=None)
right = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
right.circle("x", "y2", source=source, size=10, fill_color="black", line_color=None)
p = gridplot([[left, right]])
show(p)
这两个图不是 "linked by x-coordinate":它只是看起来那样,因为您的点恰好在两个图中具有相同的 x 坐标。如果您为每个数据点分配两个不同的 x 坐标(x1
和 x2
),您会看到它们实际上是通过数据中的行号链接的 table (您不需要手动分配 id
):
import numpy as np
from bokeh.plotting import figure,output_notebook, show, gridplot
from bokeh.models import ColumnDataSource
output_notebook()
N = 100
max = 100
x1 = [0,10,20,30]
x2 = [50,20,10,70]
y1 = [10,10, 20, 20]
y2 = [30,0,30,0]
source = ColumnDataSource(data=dict(x1=x1, x2=x2, y1=y1, y2=y2))
TOOLS="box_select"
left = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
left.circle("x1", "y1", source=source, size=10, fill_color="black", line_color=None)
right = figure(width=400, height=400, tools=TOOLS, x_range=(0,100), y_range=(0,100))
right.circle("x2", "y2", source=source, size=10, fill_color="black", line_color=None)
p = gridplot([[left, right]])
show(p)