Commutatori a più colonneC'è un modo per impedire che la stessa colonna venga selezionata durante l'esecuzione di più commutatori di colonna?
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;
Se lo lasci funzionare abbastanza a lungo, alla fine cs2 raggiunge cs1 e genera un errore.Poiché le colonne ora sono le stesse, cs1 e cs2 perdono le loro dipendenze X/Y e ora cambiano entrambi i parametri.Quindi X=Y ora è sempre vero.
Qualcuno conosce qualche lavoro in giro?
Ri: Commutatori di più colonneEcco i pulsanti.Questo usa Schedule() per eseguire l'animazione e setIcon() per ottenere la grafica.le istruzioni Write() dovrebbero essere sostituite con la logica per modificare le variabili.OnClose imposta la finestra visibile per chiudere la finestra dello scheduler quando la finestra visibile è chiusa.

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>
Ri: Commutatori di più colonneIn realtà ho fatto funzionare la formattazione usando la funzione Col List Box.Tuttavia, se qualcuno dedicasse un po' di tempo a provare a creare il pulsante play e stop personalizzato, AVREI I MIEI MOLTI GRAZIE!
Ecco il codice che ho creato rapidamente per i selettori personalizzati in cui xcolumns e ycolumns sono l'elenco delle colonne desiderate per il passaggio e dt è la tabella dei dati.
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);
Ri: Commutatori di più colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Quindi, l'ho fatto, ma poiché i nomi delle colonne sono piuttosto lunghi non riesco a formattarli correttamente nella mia casella di riepilogo.Sai come farli apparire come fanno nel cambio di colonna?(Prima parte... ultima parte)?
Ri: Commutatori di più colonneQuesta è una limitazione irritante dei commutatori di colonna.La soluzione alternativa consiste nel non utilizzare i commutatori di colonna ma implementare la funzionalità manualmente utilizzando le caselle di riepilogo (o le caselle combinate).Allega a queste caselle di riepilogo uno script che eliminerà il grafico bivariato e ne aggiungerà uno nuovo in base alle selezioni della casella di riepilogo.