是否可以将数据筛选器/本地数据筛选器水平排列?(更改用户界面)大家好,
我正在使用 JMP 中的数据筛选器,通常需要用到 10 多个筛选器。目前,所有筛选器都垂直排列在一个长列表中,我必须向下滚动很多才能应用筛选器,这感觉非常奇怪。
是否可以自定义数据筛选器用户界面,使某些筛选器能够水平排列成行(而不是像现在这样排列成一长串垂直的下拉列表)?
感谢您的指导!
自动化和脚本编写基础数据分析与建模回复:是否可以水平排列数据筛选器/本地数据筛选器?(更改用户界面)我认为至少可以通过使用多个数据筛选器来复现这个问题。 我可以将数据筛选器排列成两列吗?您也可以尝试通过大量操作显示框来实现,但我没有尝试过(在这种情况下,我使用自定义数据筛选器)。
回复:是否可以水平排列数据筛选器/本地数据筛选器?(更改用户界面)
感谢您的回复。理想情况下,应该使用单个数据过滤器而不是多个过滤器来实现此功能,因为数据过滤器的主要优势在于其条件过滤能力。虽然使用多个过滤器可能是一个可行的解决方案,但我不太确定能否轻松地将上下文传递给内部过滤器以实现条件过滤。此外,用户界面看起来也会非常糟糕。
我还注意到自定义数据筛选器存在一些限制(在组合框中进行了测试):
- 用户界面问题:当列的值过大时,下拉菜单会变得过长,难以使用。即使只有一个较长的值也会出现这种情况。(需要先对数据进行截断或筛选,然后再将其显示为下拉菜单,这比直接使用数据筛选更费时费力。)
- 性能问题:显示数千条记录的速度极其缓慢。我尝试了不同的方法(例如,通过汇总获取唯一值,以及使用哈希来识别列的唯一值),但都失败了。
- 条件筛选的复杂性:如果有很多下拉列表,实现条件筛选需要编写大量的代码,很快就会变得很繁琐。
回复:是否可以水平排列数据筛选器/本地数据筛选器?(更改用户界面)感谢您的回复。
您能否分享一些示例代码,展示如何在组合框中显示数据表中的列值,并实现条件判断?
回复:是否可以水平排列数据筛选器/本地数据筛选器?(更改用户界面)略有不同的方法:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 437, 787 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
Local Data Filter(
Add Filter(
columns( :sex, :height, :weight )
)
)
);
Current Report()["Local Data Filter", List Box( 6 )] << set Horizontal( 1 );
Current Report()[ List Box( 4 )] << set Horizontal( 0 );

回复:是否可以水平排列数据筛选器/本地数据筛选器?(更改用户界面)你想做什么?需要满足哪些条件?这些条件应该按什么顺序应用?它们必须按顺序应用,还是可以跳过某些条件?你可以修改主表(例如添加新列/选择)吗?筛选器何时应用(立即应用/点击按钮后应用)?<< 选择带有限制条件的 WHERE 子句可能是一个相当简单的选项
本地数据筛选器可以使用组合框(或类似选择器)
Names Default To Here(1);
colcount = 3;
dt = Open("$SAMPLE_DATA/Car Poll.jmp");
dist = dt << Distribution(
Nominal Distribution(Column(:country)),
Local Data Filter(
Conditional,
Add Filter(
columns(:country, :size, :type),
Display(:country, N Items(3), "Single Category Display"),
Display(:size, N Items(3), "Single Category Display"),
Display(:type, N Items(3), "Single Category Display")
)
)
);
ldf_ob = (Report(dist) << Top Parent)[Outline Box("Local Data Filter")];
lub = ldf_ob[LineupBox(2)];
lub << N Col(colcount);
For(i = 1, i <= colcount, i++,
lub << Prepend(Spacer Box(Size(200, 0)));
);
Write();
回复:是否可以水平排列数据筛选器/本地数据筛选器?(更改用户界面)你觉得不用图表生成器能行吗?如果移除图表生成器,你能随心所欲地进行水平方向的图表展示吗?
回复:是否可以水平排列数据筛选器/本地数据筛选器?(更改用户界面)每个列表框都有一个水平(0/1)标志。
只需更改该标志,即可将所有垂直排列的显示对象列表更改为水平排列的显示对象列表。
这里有一个纯数据过滤器的水平模式示例(不知道这是否有用)。
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
win = new window("test", dt << data Filter(
Add Filter(
columns( :height, :countries visited, :family cars )
)
));
win["Data Filter",ListBox(7)] << set horizontal(1)