Conmutadores de varias columnas¿Hay alguna forma de evitar que se elija la misma columna cuando se ejecutan varios conmutadores de columna?
dt = open("$SAMPLE_DATA/Candy Bars.jmp");
biv = dt << Bivariate(
Y( :Saturated fat g ),
X( :Sugars g ),
SendToReport( Dispatch( {}, "Bivar Plot", FrameBox, {Frame Size( 593, 564 )} ) )
);
cs1 = biv << Column Switcher(
:Saturated fat g,
{:Name( "Serving/pkg" ), :Calories, :Total fat g, :Saturated fat g,
:Cholesterol g, :Sodium mg, :Carbohydrate g, :Dietary fiber g, :Sugars g,
:Protein g, :Vitamin A %RDI, :Vitamin C %RDI, :Calcium %RDI, :Iron %RDI}
);
cs2 = biv << Column Switcher(
:Sugars g,
{:Name( "Oz/pkg" ), :Calories, :Total fat g, :Saturated fat g,
:Cholesterol g, :Sodium mg, :Carbohydrate g, :Dietary fiber g, :Sugars g,
:Protein g, :Vitamin A %RDI, :Iron %RDI}
);
cs1 << Run;
cs2 << Run;
Si deja que esto se ejecute el tiempo suficiente, eventualmente cs2 se pone al día con cs1 y arroja un error.Dado que las columnas ahora son las mismas, cs1 y cs2 pierden sus dependencias X/Y y ahora cambian ambos parámetros.Por lo tanto, X=Y ahora siempre es cierto.
¿Alguien sabe algún trabajo alrededor?
Re: Conmutadores de varias columnasAquí están los botones.Esto usa Schedule() para ejecutar la animación y setIcon() para obtener el gráfico.las instrucciones Write() deben reemplazarse con la lógica para cambiar las variables.OnClose configura la ventana visible para cerrar la ventana del programador cuando se cierra la ventana visible.

stop = 0; // animating state
loopFun = Function( {},
If( !stop,
Write( "go again\!n" ); // logic for animation
Schedule( .5, loopFun() ); // continue the animation 1/2 second later
)
);
New Window( "buttons",
<<ONCLOSE></ONCLOSE>
Re: Conmutadores de varias columnasEn realidad, obtuve el formato para trabajar usando la función Col List Box.Sin embargo, si alguien dedicó algo de tiempo a intentar crear el botón personalizado de reproducción y detención, ¡LE AGRADECERÍA MUCHAS MUCHAS GRACIAS!
Aquí está el código que hice rápidamente para los conmutadores personalizados donde xcolumns y ycolumns son la lista de columnas que se desean cambiar, y dt es la tabla de datos.
xnlines = If(nitems(xcolumns) > 15, 15, nitems(xcolumns));
ynlines = If(nitems(ycolumns) > 15, 15, nitems(ycolumns));
vlb << Append(hlb = Hlistbox(VlistBox(
Text Box("Column X"),
columnswitcherX = Col List Box(width(250), maxSelected(1), nlines(xnlines)),
Text Box("Column Y"),
columnswitcherY = Col List Box(width(250), maxSelected(1), nlines(ynlines)))));
columnswitcherX << Append(xcolumns);
columnswitcherY << Append(ycolumns);
columnswitcherX << Set Selected(1);
columnswitcherX << Set Script(
bivcolx = columnswitcherX << get selected;
bivcoly = columnswitcherY << get selected;
try(interactivebiv << Delete Box);
hlb << Append(interactivebiv = dt << Bivariate( X( Column(dtinteractive, bivcolx) ), Y( Column(dtinteractive, bivcoly) ), Fit Line( {Line Color( {213, 72, 87} )} )) )
);
columnswitcherY << Set Script(
bivcolx = columnswitcherX << get selected;
bivcoly = columnswitcherY << get selected;
try(interactivebiv << Delete Box);
hlb << Append(interactivebiv = dt << Bivariate( X( Column(dtinteractive, bivcolx) ), Y( Column(dtinteractive, bivcoly) ), Fit Line( {Line Color( {213, 72, 87} )} )) )
);
columnswitcherY << Set Selected(1);
Re: Conmutadores de varias columnas<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Entonces, hice esto, pero dado que los nombres de las columnas son bastante largos, no puedo hacer que tengan el formato correcto en mi cuadro de lista.¿Sabes cómo hacer que aparezcan como lo hacen en el selector de columnas?(Primera parte... última parte)?
Re: Conmutadores de varias columnasEsta es una limitación irritante de los conmutadores de columna.La solución alternativa es no usar conmutadores de columnas, sino implementar la funcionalidad usted mismo usando cuadros de lista (o cuadros combinados).Adjunte a estos cuadros de lista una secuencia de comandos que eliminará el gráfico bivariado y agregará uno nuevo basado en las selecciones del cuadro de lista.