Aritmética de filtros de datos locales (p. ej., para Graphlets)¡Los graphlets son geniales!
El filtro de datos locales es excelente. Ajusta automáticamente los datos del gráfico para que coincidan con el subgrupo del gráfico principal.
¿Existen funciones JSL para ajustar este filtro?
ya encontre el
Skip Filters()
en la publicación de Nascif Pase el graflet desde otra tabla de datos
Elimina partes no utilizadas del filtro, de modo que el filtro también puede funcionar para otras tablas sin mensajes de advertencia.
¿Hay una documentación de cómo funciona en detalle?
¿Existe también una función JSL para agregar o intersectar filtros?
Caso de aplicación:
Si generé un gráfico con un filtro (gráfico Bif Class restringido a la edad = 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 ) ) )
)
)
y utilícelo como una etiqueta flotante (a través de "guardar secuencia de comandos" - "Etiqueta flotante"/"Pegar Graphlet")...
el filtro de datos local todavía está allí en el script 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 ) ) )
)
)
)}
)
)
);
pero su función se reemplaza automáticamente por el filtro de datos locales del marco de extensión de etiquetas flotantes (todas las edades visibles):

Por lo tanto, sería genial tener una función de "combinación" para combinar el filtro de datos local manual con el del Marco de extensión de etiquetas flotantes.
Gráficossecuencias de comandosRe: Aritmética de filtros de datos locales (p. ej., para Graphlets)¡Esa es una solución!
no hay posibilidad de que se escape el manejo del filtro de datos local del marco de extensión de etiqueta flotante.
Re: Aritmética de filtros de datos locales (p. ej., para Graphlets)Es posible que necesite usar una tabla de datos adicional para eso
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();Re: Aritmética de filtros de datos locales (p. ej., para Graphlets)Ah, "Agregar filtro" agrega un nuevo grupo "O". Me perdí este detalle:

Entonces, solo necesitamos una solución para arreglar el gráfico en miniatura en la etiqueta flotante.
Hm...
Re: Aritmética de filtros de datos locales (p. ej., para Graphlets)Creo que el último también debería funcionar si modifica el script de otra manera (como dije, solo hice fuerza bruta para que funcione). Si tuviera que limpiarlo, la primera iteración de eso sería tal vez algo como esto donde primero aplico los filtros de la etiqueta flotante y luego agrego filtros adicionales
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">Re: Aritmética de filtros de datos locales (p. ej., para Graphlets)</LINGO-SUB><LINGO-BODY id="lingo-body-525478" slang="en-US" mode="NONE"><P>Hola Jarmo.<BR /> Muchas gracias por el fragmento de JSL: mucho que aprender de él...</P><P> </P><P>Es interesante:</P><OL><LI>Si el filtro de datos locales se crea dentro de la parte Graph Builder (mi código), se sobrescribe con el filtro de datos locales del Marco de extensión de etiquetas flotantes.</LI><LI>Si el Filtro de datos locales se crea después del Generador de gráficos (su código), sobrescribe el Filtro de datos locales del Marco de extensión de etiquetas flotantes. *)</LI></OL><P> </P><P>*) Mirando más de cerca:</P><P>Esto solo es válido para el gráfico que se abre después de hacer clic en el gráfico en miniatura en la etiqueta flotante.<BR /> El gráfico en miniatura todavía muestra todas las edades, por lo que el caso 1)</P><P>-> sorprendente que se generen dos gráficos distintos. ¿Con diferentes formas de sobrescribir el filtro de datos locales?<BR /><BR /></P><P>Una última pregunta:<BR /> ¿Hay algún tutorial que explique las diferentes funciones de filtro de datos locales?<BR /> por ejemplo, ¿por qué tienes que usar</P><PRE><CODE class=" language-jsl">f << (Filter Column(:age) << Where(::age == 14));
un por qué
f << Add Filter(Columns(:age), Where(::age == 14));
agregar el mismo filtro, pero sin ningún efecto?
Re: Aritmética de filtros de datos locales (p. ej., para Graphlets)Puede escribir esto, pero definitivamente sería bueno tener una opción donde los filtros de datos locales podrían fusionarse. Este código se puede hacer más limpio, pero solo lo forcé por fuerza bruta
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));
),
)}
)
)
);