本地数据过滤算法(例如,Graphlet)Graphlet 非常酷!
本地数据过滤器很棒。 它会自动调整图基元的数据以匹配主图的子组。
JSL 是否有调整此过滤器的功能?
我已经找到了
Skip Filters()
在纳斯西夫的帖子中将鼠标悬停在另一个数据表中的 graphlet
它会删除过滤器中未使用的部分,以便过滤器也可以用于其他表,而不会发出警告消息。
有没有详细说明其工作原理的文档?
还有 JSL 函数来添加或交叉过滤器吗?
应用案例:
如果我生成带有过滤器的图表(Bif 类图仅限于年龄 = 14)
Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :age ) ),
Elements( Points( X, Y, Legend( 26 ) ) ),
Local Data Filter(
Add Filter( columns( :age ), Where( :age == 14 ), Display( :age, N Items( 6 ) ) )
)
)
并将其用作悬停标签(通过“保存脚本”-“悬停标签”/“粘贴 Graphlet”)...
本地数据过滤器仍然存在于 JSL 脚本中:
Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Variables( X( :sex ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Graph Builder(
Size( 422, 474 ),
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :age ) ),
Elements( Points( X, Y, Legend( 26 ) ) ),
Local Data Filter( Add Filter( columns( :age ), Where( :age == 14 ) ) )
)
)
)}
)
)
);
但它的功能会自动被悬停标签扩展框架中的本地数据过滤器取代(所有年龄段都可见):

因此,如果有一个“合并”功能来将手动本地数据过滤器与悬停标签扩展框架中的过滤器结合起来,那就太好了。
内容组织回复:本地数据过滤算法(例如 Graphlet)这就是一个解决方案!
悬停标签扩展框架本地数据过滤器处理没有机会逃脱。
回复:本地数据过滤算法(例如 Graphlet)可能需要为此使用额外的数据表
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
If( Is Empty(dt1),
dt1 = dt << Subset(All Rows, Selected Columns(0), invisible);
);
dt1 << Clear Row States;
filter_expr = Expr(And());
Insert Into(filter_expr, Name Expr(_whereExpr));
Insert Into(filter_expr, Name Expr(:age == 14));
Insert Into(filter_expr, Name Expr(:height >= 55 & :height <= 70));
Eval(EvalExpr(dt1 << Select Where(!filter_expr)));
dt1 << Hide and Exclude(1);
gb_expr = EvalExpr(dt1 << Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26))),
Local Data Filter(
Grouped by AND(1),
Add Filter(columns(:sex), Where(Expr(NameExpr(_whereExpr)))),
Add Filter(columns(:age), Where(:age == 14), Display(:age, N Items(6))),
Add Filter(columns(:height), Where(:height >= 55 & :height <= 70))
)
));
gb_expr;
),
Click(
dt1 << Clear Row States;
gb2 = gb_expr;
Eval(EvalExpr(gb2 << On Close(
Try(Close(Expr(dt1), no save));
)));
)
)}
)
)
);
Write();回复:本地数据过滤算法(例如 Graphlet)啊,“添加过滤器”添加了一个新的“OR”组 - 我错过了这个细节:

因此,我们只需要一个解决方案来修复悬停标签中的微型图。
嗯...
回复:本地数据过滤算法(例如 Graphlet)我认为如果您以其他方式修改脚本,后一个也应该可以工作(就像我说的,我只是用蛮力让它工作)。 如果我要清理它,第一次迭代可能会是这样的,我首先应用悬停标签中的过滤器,然后添加其他过滤器
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Local({gb, f},
gb = Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26)))
);
Eval(EvalExpr(
f = gb << Local Data Filter(
Add Filter(
columns(expr(_filters)), Where(expr(NameExpr(_whereExpr)))
)
)
));
//f << Conditional(1);
f << Grouped By And(1);
f << Add Filter(Columns(:age), Where(:age == 14));
f << Add Filter(Columns(:height), Where(:height >= 55));
)
),
)}
)
)
);
Write();
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-525478" slang="en-US" mode="NONE">回复:本地数据过滤算法(例如 Graphlet)</LINGO-SUB><LINGO-BODY id="lingo-body-525478" slang="en-US" mode="NONE"><P>嗨,贾莫。<BR />非常感谢 JSL 片段 - 从中可以学到很多东西......</P><P> </P><P>这真有趣:</P><OL><LI>如果本地数据过滤器是在图形生成器部分(我的代码)内创建的,它将被悬停标签扩展框架中的本地数据过滤器覆盖。</LI><LI>如果本地数据过滤器是在图形生成器(您的代码)之后创建的,它将覆盖悬停标签扩展框架中的本地数据过滤器。 *)</LI></OL><P> </P><P>*)仔细观察:</P><P>这仅适用于单击悬停标签中的微型图表后打开的图表。<BR />微型图本身仍然显示所有年龄段,因此情况 1)</P><P>-> 令人惊讶的是生成了两个不同的图表。 使用不同的方式覆盖本地数据过滤器?<BR /><BR /></P><P>最后一个问题:<BR />是否有教程解释不同的本地数据过滤器功能。<BR />例如,为什么你必须使用</P><PRE><CODE class=" language-jsl">f << (Filter Column(:age) << Where(::age == 14));
为什么
f << Add Filter(Columns(:age), Where(::age == 14));
添加相同的过滤器,但没有任何效果?
回复:本地数据过滤算法(例如 Graphlet)您可以编写此脚本,但如果能够选择合并本地数据过滤器,那就太好了。 这段代码可以变得更简洁,但我只是暴力破解它
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
gb = Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26)))
);
Insert Into(_filters, Name Expr(:age));
Eval(Substitute(
Expr(
f = gb << Local Data Filter(Add Filter(
columns(_col_list_), Where(_wheres_)
))
),
Expr(_col_list_),
_filters,
Expr(_wheres_),
Parse(_where)
));
f << (Filter Column(:age) << Where(::age == 14));
),
)}
)
)
);