JSL remplaçant une boîte de cadre basée sur une case à cocherc'est mon code
dt = Current Data Table();
listX = {"X"};
listY = {"Y1"};
bivExpr = Expr(
biv = Bivariate( Y( Eval List( listY ) ), X( Eval List( listx ) ) )
);
yListSelect = {"Y1", "Y2","Y3","Y4"};
BC_Indicator = Panel Box( "Choose",
indicatorSelected = Radio Box(
yListSelect,
listY = {};
Insert Into( listY, indicatorSelected << Get Selected );
//selecting a checkbox creates the new graph based on the new Y
bivExpr;
)
);
nw = New Window( "test",
H List Box(
obj = dt << Bivariate(
Y( Eval List( listY ) ),
X( Eval List( listX ) ),
Fit Spline( 0.1, standardized ),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Frame Size( 493, 354 ), Marker Size( 2 ), Marker Drawing Mode( "Normal" ), Transparency( transparencyLegend ),
Row Legend(
dt:(fitVar),
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "Standard" ),
Continuous Scale( Cont ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
),
BC_Indicator
)
);Mon tableau de données
| X | Y1 | Y2 | Y3 | Y4 |
| 160.5893 | 194 | 16.79012 | 0,498753 | 7.26817 |
| 160.2228 | 234 | 20.4878 | 0,738916 | 4.466501 |
| 159.5072 | 240 | 15.53398 | 0,488998 | 5.159705 |
| 160.06 | 268 | 11.27098 | 1.213592 | 4.600484 |
| 160.9668 | 230 | 17.35941 | 0,2457 | 5.867971 |
| 159.3969 | 222 | 19.08213 | 0,980392 | 8.845209 |
| 161.0078 | 223 | 21.19701 | 0,75 | 6.766917 |
| 159.6957 | 201 | 21.44638 | 0,251889 | 9.343434 |
| 159.539 | 237 | 18.90547 | 0,498753 | 9 |
| 160.9438 | 210 | 16.38142 | 0,492611 | 9.605911 |
| 160.2693 | 229 | 19.11765 | 0,247525 | 8.188586 |
| 160.6793 | 220 | 17.07317 | 1.231527 | 6.157635 |
| 161.8911 | 187 | 21.62162 | 0,49505 | 9.158416 |
| 162.628 | 201 | 20.82324 | 0,977995 | 10.51345 |
| 162.8909 | 192 | 20.4878 | 0,4914 | 6.896552 |
| 163.0162 | 212 | 18.79518 | 0,243309 | 7.073171 |
| 160.8283 | 206 | 17.03163 | 0,490196 | 8.557457 |
| 160.3191 | 208 | 22.87105 | 0,490196 | 7.823961 |
| 160.3265 | 222 | 19.95134 | 1.466993 | 9.046455 |
| 160.2706 | 227 | 18.42752 | 0,740741 | 6.947891 |
| 162.8886 | 186 | 18.85856 | 0,250627 | 7.537688 |
| 162.8631 | 189 | 23.61446 | 0,728155 | 7.055961 |
| 161.1953 | 241 | 16.34146 | 0,492611 | 8.108108 |
| 161.2756 | 239 | 12.31527 | 0,492611 | 5.707196 |
| 160.1107 | 247 | 16.66667 | 0,487805 | 5.121951 |
| 161.368 | 201 | 19.85294 | 0,738916 | 6.451613 |
| 161.2246 | 218 | 20.19704 | 0,49505 | 7.5 |
| 160.0145 | 215 | 23.11436 | 0,735294 | 8.148148 |
| 161.6576 | 149 | 18.15182 | 0,33557 | 10.10101 |
| 159.5943 | 248 | 14.56311 | 0,4914 | 6.356968 |
| 159.8647 | 182 | 22.80702 | 1.772152 | 10.07557 |
| 160.3423 | 227 | 13.13869 | 0,244499 | 7.090465 |
| 161.7888 | 241 | 16.42512 | 0,484262 | 5.326877 |
| 162.0188 | 219 | 20.43269 | 0,973236 | 7.729469 |
Si vous exécutez le script, vous pouvez voir que lors de la sélection d'une case à cocher, il ouvrira une nouvelle fenêtre avec le X par Y

J'essaie de comprendre comment puis-je remplacer le graphique dans la fenêtre actuelle et ajouter également tous les détails comme la ligne spline, les marqueurs, etc.
J'ai essayé de regarder la "structure arborescente" mais je ne sais pas comment remplacer le "framebox (1)"
merci!
Modélisation statistique avancéePersonnalisation de masseRe : JSL remplace une boîte de cadre basée sur une case à cocherJe ne vois pas de moyen de supprimer les colonnes numériques via JSL.
En y regardant de plus près, j'ai trouvé un moyen de n'afficher que les colonnes de caractères.
Names Default To Here( 1 );
dt = Open( "$sample_data/big class.jmp" );
dis = Distribution( Continuous Distribution( Column( :height ) ), Local Data Filter );
mylist = (Report( dis ) << top parent)["Local Data Filter"][ListBoxBox( 1 )] << get items;
For( i = N Items( myList ), i >= 1, i--,
If( Column( dt, myList[i] ) << get data type != "Character",
(Report( dis ) << top parent)["Local Data Filter"][ListBoxBox( 1 )] << remove item( i )
)
);
Re : JSL remplace une boîte de cadre basée sur une case à cochercela fonctionne très bien, j'ai regardé la documentation mais je n'ai pas trouvé comment faire quelque chose. pas sûr que ce soit possible
Dans l'option de filtre de données, vous pouvez désélectionner numérique (image ci-dessous), comment puis-je faire cela en JSL ?

j'ai essayé de suivre ce post
https://community.jmp.com/t5/Discussions/Data-Filter-only-by-columns-that-are-of-type-character/td-p/39206
Mais j'obtiens ceci :

mais ce que je veux en fait, c'est juste une liste filtrée avec uniquement des caractères ou si je peux filtrer par mots qui n'incluent que des mots commençant par "PC_" par exemple

https://community.jmp.com/t5/Discussions/Data-Filter-only-by-columns-that-are-of-type-character/td-p/39206
Re : JSL remplace une boîte de cadre basée sur une case à cocherJe crois que vous pouvez obtenir ce que vous voulez en utilisant un filtre de données local et en le configurant dans l'une de ses nombreuses options

names default to here(1);
dt = Current Data Table();
Bivariate(
Y( :Y4 ),
X( :X ),
Fit Spline( 0.1, Standardized, {Line Color( {212, 73, 88} )} ),
Fit Spline( 10000, {Line Color( {61, 174, 70} )} ),
Local Data Filter(
Auto clear( 1 ),
Add Filter( columns( :rowLeg1, :rowLeg2 ), Where( :rowLeg1 == "A" ) )
),
Column Switcher( :Y4, {:Y1, :Y2, :Y3, :Y4} ),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Frame Size( 444, 359 ), Marker Size( 6 ),
Marker Drawing Mode( "Normal" ), Transparency( 0.5 ),
Row Legend(
Y2,
Color( 1 ),
Color Theme( "Blue to Gray to Red" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 1 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
Jetez un œil à la documentation sur le filtre de données local, pour voir comment le modifier pour qu'il réponde à vos besoins spécifiques
Re : JSL remplace une boîte de cadre basée sur une case à cochercela fonctionne, existe-t-il un moyen de créer un sélecteur de légende de ligne afin que je puisse basculer entre les légendes,
disons que j'ai 2 autres lignes comme celle-ci:

puis dans le graphique en plus le sélecteur de colonne j'aurai à droite un sélecteur de légende

J'ai essayé d'utiliser un script d'un autre article, mais chaque fois que je change la légende de la ligne, elle est dupliquée comme ceci :

J'ai essayé de parcourir l'arborescence et de supprimer mais cela ne fonctionne pas..
Re : JSL remplace une boîte de cadre basée sur une case à cocherLa meilleure façon de gérer ce que vous voulez est d'utiliser un sélecteur de colonne

names default to here(1);
dt = Current Data Table();
Bivariate(
Y( :Y4 ),
X( :X ),
Fit Spline( 0.1, Standardized, {Line Color( {212, 73, 88} )} ),
Fit Spline( 10000, {Line Color( {61, 174, 70} )} ),
Column Switcher( :Y4, {:Y1, :Y2, :Y3, :Y4} ),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Frame Size( 444, 359 ), Marker Size( 6 ),
Marker Drawing Mode( "Normal" ), Transparency( 0.5 ),
Row Legend(
Y2,
Color( 1 ),
Color Theme( "Blue to Gray to Red" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 1 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
Il permet d'apporter des modifications interactives au graphique, puis lorsqu'une nouvelle colonne est sélectionnée, toutes les modifications sont appliquées à la nouvelle colonne.
Si vous voulez toujours le faire sans utiliser le sélecteur de colonne, ce que vous devez faire, c'est dans votre boîte radio, lorsqu'une nouvelle sélection est faite, vous extrayez le script pour le bivarié, puis analysez le script, en remplaçant l'ancien nom de colonne, avec le nouveau nom de colonne, supprimez l'ancien rapport bivarié, puis exécutez le script nouvellement modifié.