【问题标题】:Trying to run additive transform_filter operations depending on separate interval selection endpoints in altair / vega-lite尝试根据 altair / vega-lite 中的单独间隔选择端点运行附加的 transform_filter 操作
【发布时间】:2021-09-09 03:09:47
【问题描述】:

TL;DR:
在我看来,问题一定出在我试图从选择中获取端点的方式上:(isDefined(brush1.y) ? (brush1.y[0]) : 1)

我使用来自 n 个样本的两类(A 和 B)粒子的大小数据。我想将 A 与 B 的散点图作为任何可能大小子范围内的粒子百分比。

为了以交互方式选择这些大小子范围,我使用了两个辅助图(每个类别一个),我在其中添加了区间选择,以便设置和移动所需的范围。

从另一个问题here 我已经了解到聚合操作不能通过间隔选择来更新(这是一个vega-lite issue)。因此,我准备了我的数据框以包含任何可能的大小箱以及 A 和 B 的任何可能的大小箱组合的预先计算的百分比值。现在,我 “仅” 需要找到一种方法来过滤它将数据集扩展到辅助图中当前选择的内容。

数据框结构示例:

      sample      A     lower_A    upper_A       B      lower_B     upper_B

 0      S3      20.1         0       100       97.7         0         100
 1      S3      20.1         0       100        0.9       100         200
...    ...       ...       ...       ...        ...       ...         ...
673     S2       6.0       300       500        2.5       200         500
674     S2       6.0       300       500        0.9       300         500

代码使用transform_calculate 获取选择的端点(灵感来自here)和transform_filter 使用提取的值来过滤代表大小上限和下限的列上的数据集A 和 B 的百分比(灵感来自 here)。

为了防止在区间边界不在数据集中存在的值处(大小下限和上限在 0、100、200、300、400 和 500 处离散)时从过滤中选择空,计算的端点是固定的通过ceil()floor()as it was suggested below 到下一个完整的一百。但是,绘制的点似乎对选择的间隔没有反应。在 vega-lite 编辑器的数据视图中,我可以看到过滤产生的行始终固定在 lower_0 和 upper_100,与选择的内容无关。

包含工作玩具数据框的示例:

import pandas as pd
import altair as alt


df = pd.DataFrame({'sample':['S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S3','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S1','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2','S2'],'A':[20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.1,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,20.9,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,16.5,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,78.2,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,77.4,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,70.1,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,95.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,96.3,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,92.8,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,98.4,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,99.5,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,98.8,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,58.1,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,56.5,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,53.6,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.2,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,75.4,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.3,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,78.6,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,82.3,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,17.2,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,18.9,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,22.6,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,28.7,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,3.1,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0],'lower_A':[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300],'upper_A':[100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500],'B':[97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9,97.7,0.9,0.2,0.5,0.4,97.7,98.6,98.8,99.3,0.9,1.1,1.6,0.2,0.6,0.5,91.3,4.7,1.8,1.2,0.6,91.3,96.1,97.9,99.0,4.7,6.5,7.7,1.8,3.0,1.2,90.3,6.5,1.7,0.9,0.4,90.3,96.8,98.5,99.4,6.5,8.2,9.1,1.7,2.5,0.9],'lower_B':[0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300,0,100,200,300,400,0,0,0,0,100,100,100,200,200,300],'upper_B':[100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500,100,200,300,400,500,200,300,400,500,300,400,500,400,500,500]})


brush1 = alt.selection_interval(name="brush1", encodings=['y'])
brush2 = alt.selection_interval(name="brush2", encodings=['x'])


scatter = alt.Chart(df
).transform_calculate(
    b1l='floor((isDefined(brush1.y) ? (brush1.y[0]) : 1) / 100) * 100',
    b1u='ceil((isDefined(brush1.y) ? (brush1.y[1]) : 1) / 100) * 100',
    b2l='floor((isDefined(brush2.x) ? (brush2.x[0]) : 1) / 100) * 100',
    b2u='ceil((isDefined(brush2.x) ? (brush2.x[1]) : 1) / 100) * 100',
).mark_point().encode(
    x = 'B',
    y = 'A',
    tooltip = 'sample'
).transform_filter(
    '(datum.lower_A == datum.b1l) &&'
    '(datum.upper_A == datum.b1u) &&'
    '(datum.lower_B == datum.b2l) &&'
    '(datum.upper_B == datum.b2u)'
)
    

A = alt.Chart(df).mark_line().encode(
    x = 'mean(A)',
    y = alt.Y('lower_A', axis=alt.Axis(title='Select size range for A'))
).transform_filter(
    '(datum.lower_A == datum.lower_B) &&'
    '(datum.upper_A == datum.upper_B)'
).add_selection(
    brush1
).properties(
    height = 300,
    width = 100
)


B = alt.Chart(df).mark_line().encode(
    x = alt.X('lower_B', axis=alt.Axis(title='Select size range for B')),
    y = 'mean(B)'
).transform_filter(
    '(datum.lower_A == datum.lower_B) &&'
    '(datum.upper_A == datum.upper_B)'
).add_selection(
    brush2
).properties(
    height = 100,
    width = 400
)


A | scatter & B

如果我在这里做错了什么,有人可以发现吗?或者提示我是否应该以完全不同的方式解决它?

【问题讨论】:

    标签: python altair vega-lite


    【解决方案1】:

    我认为问题在于您在离散值(lower_Alower_B)和连续值(画笔范围)之间使用 == 相等性。在满足所有这些等式的精确笔刷范围上着陆是非常困难的。

    您可以尝试使用不那么严格的过滤器,可能使用<=>=,或者在过滤器表达式中使用floorceil 函数。

    【讨论】:

    • 是的,我也认为这可能是罪魁祸首(然后我尝试通过查看 vega-lite 编辑器中的信号查看器将间隔设置为我知道存在于 lower_ 和 upper_ 大小列中的确切数字) .现在我也尝试使用>=<= 而不是你建议的==,但它也没有在散点图中显示任何点。所以这还不是解决方案
    • 更新:floorceil 出现 3 个点(每个样本一个,正如预期的那样),但是,它们对画笔没有反应。编辑器显示,它们始终对应于 lower_upper_ / ab0100 的行。这就是我使用它的方式:).transform_calculate( b1l='floor((isDefined(brush1.y) ? (brush1.y[0]) : 1) / 100) * 100', b1u='ceil((isDefined(brush1.y) ? (brush1.y[1]) : 1) / 100) * 100', b2l='floor((isDefined(brush2.x) ? (brush2.x[0]) : 1) / 100) * 100', b2u='ceil((isDefined(brush2.x) ? (brush2.x[1]) : 1) / 100) * 100',
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2017-10-02
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多