Commutateurs à colonnes multiplesExiste-t-il un moyen d'empêcher la sélection de la même colonne lors de l'exécution de plusieurs commutateurs de colonne ?
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 vous laissez cela fonctionner assez longtemps, cs2 finit par rattraper cs1 et génère une erreur.Étant donné que les colonnes sont désormais identiques, cs1 et cs2 perdent leurs dépendances X/Y et modifient désormais les deux paramètres.Ainsi X=Y est maintenant toujours vrai.
Quelqu'un connaît-il un travail autour?
Re : Commutateurs de colonnes multiplesVoici les boutons.Cela utilise Schedule () pour exécuter l'animation et setIcon () pour obtenir le graphique.les instructions Write() doivent être remplacées par la logique pour modifier les variables.Le OnClose configure la fenêtre visible pour fermer la fenêtre du planificateur lorsque la fenêtre visible est fermée.

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 : Commutateurs de colonnes multiplesEn fait, j'ai réussi à faire fonctionner le formatage en utilisant la fonction Col List Box.Cependant, si quelqu'un passait du temps à essayer de créer le bouton de lecture et d'arrêt personnalisé, VOUS AURIEZ MES MERCI !
Voici le code que j'ai rapidement créé pour les sélecteurs personnalisés où xcolumns et ycolumns sont la liste des colonnes souhaitées pour la commutation, et dt est la table de données.
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 : Commutateurs de colonnes multiples<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Donc, j'ai fait cela, mais comme les noms de colonne sont assez longs, je n'arrive pas à les formater correctement dans ma zone de liste.Savez-vous comment les faire apparaître comme ils le font dans le sélecteur de colonnes ?(Première partie.... dernière partie) ?
Re : Commutateurs de colonnes multiplesIl s'agit d'une limitation irritante des commutateurs de colonne.La solution de contournement consiste à ne pas utiliser de sélecteurs de colonnes, mais à implémenter vous-même la fonctionnalité à l'aide de zones de liste (ou de zones de liste déroulante).Attachez à ces zones de liste un script qui supprimera le tracé bivarié et en créera un nouveau basé sur les sélections de la zone de liste.