JSL che sostituisce una casella frame basata sulla casella di controlloquesto è il mio codice
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
)
);La mia tabella dei dati
| 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 |
Se esegui lo script puoi vedere che quando selezioni una casella di controllo si aprirà una nuova finestra con la X per Y

Sto cercando di capire come posso sostituire il grafico nella finestra corrente e aggiungere anche tutti i dettagli come spline line, marker e così via...
Ho provato a guardare la "struttura ad albero" ma non sono sicuro di come sostituire "framebox (1)"
Grazie!
Modellazione statistica avanzataPersonalizzazione di massaRi: JSL sostituisce una casella frame basata sulla casella di controlloNon vedo un modo per rimuovere le colonne numeriche tramite JSL.
Dando una seconda occhiata, ho trovato un modo per visualizzare solo le colonne Carattere.
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 )
)
);
Ri: JSL sostituisce una casella frame basata sulla casella di controllofunziona alla grande, ho guardato la documentazione ma non ho trovato come fare qualcosa. non sono sicuro che sia possibile
Nell'opzione filtro dati puoi deselezionare numerico (immagine sotto), come posso farlo in JSL?

Ho provato a seguire questo post
https://community.jmp.com/t5/Discussions/Data-Filter-only-by-columns-that-are-of-type-character/td-p/39206
Ma ottengo questo:

ma quello che in realtà voglio è solo un elenco filtrato con solo caratteri o se posso filtrare per parole che includono solo parole che iniziano con "PC_" per esempio

https://community.jmp.com/t5/Discussions/Data-Filter-only-by-columns-that-are-of-type-character/td-p/39206
Ri: JSL sostituisce una casella frame basata sulla casella di controlloCredo che tu possa ottenere ciò che desideri utilizzando un filtro dati locale e impostandolo in una delle sue diverse opzioni

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 )
)}
)
)
);
Dai un'occhiata alla documentazione sul Filtro dati locali, per vedere come modificarlo per far sì che gestisca le tue esigenze specifiche
Ri: JSL sostituisce una casella frame basata sulla casella di controllofunziona, c'è un modo per creare un selettore di legende di riga in modo da poter passare da una legenda all'altra,
diciamo che ho altre 2 righe come questa:

quindi nel grafico oltre al selettore di colonna avrò sul lato destro un selettore di legenda

Ho provato a utilizzare uno script da un altro post, ma ogni volta che cambio la legenda della riga, viene duplicato in questo modo:

Ho provato ad andare oltre la struttura ad albero ed eliminare ma non funziona ..
Ri: JSL sostituisce una casella frame basata sulla casella di controlloIl modo migliore per gestire ciò che desideri è utilizzare un commutatore di colonna

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 )
)}
)
)
);
Consente di apportare modifiche interattive al grafico e quindi, quando viene selezionata una nuova colonna, tutte le modifiche vengono applicate alla nuova colonna.
Se vuoi ancora farlo senza usare il Column Switcher, quello che devi fare è nel tuo Radio Box, quando viene effettuata una nuova selezione, estrai lo Script per il Bivariato, quindi analizzi lo script, sostituendo il vecchio nome colonna, con il nuovo nome colonna, eliminare il vecchio report bivariato, quindi eseguire lo script appena modificato.