Debug del codice JSL: aiuto necessario con "Etichetta"Ciao,
Nel mio codice JSL, sto usando
dtt<
e posso vedere nella tabella che l'icona dell'etichetta viene aggiunta accanto a skew. Quindi sto usando il generatore di grafici e all'interno di quella routine, ho
Mostra etichette(1),
Ma quando vengono generati i grafici, non viene visualizzata l'etichetta. Puoi aiutarmi? Devo aggiungere altro?
Grazie mille
Automazione e scriptingRe: Debug del codice JSL - aiuto necessario con "Etichetta"Di solito si abilitano le etichette dalla sezione Etichetta a sinistra (questo può variare a seconda del tipo di grafico)

Dopo che sei soddisfatto del tuo generatore di grafici, copia lo script
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
dt << Set Label Columns(:City, :State);
gb = dt << Graph Builder(
Size(528, 454),
Show Control Panel(0),
Variables(X(:Longitude), Y(:Latitude)),
Elements(Points(X, Y, Legend(3), Label("Label by Row")))
);
Re: Debug del codice JSL - aiuto necessario con "Etichetta"devi attivare le etichette nel pannello di controllo:

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:name<< Label( 1 ); // no effect, label is already activated by default for this column
Graph Builder(
Size( 451, 447 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Label( "Label by Row" ) ), Smoother( X, Y ) )
);

Re: Debug del codice JSL - aiuto necessario con "Etichetta"-
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Grazie per i suggerimenti, ma purtroppo non funziona ancora. Ho evidenziato in grassetto le righe nel mio JSL.
dtt<
Riepiloga(dtt, byGroup0 = by (:layout));
Riepiloga(dtt, byGroup1 = by( :Label ));
Riepiloga(dtt, byGroup2 = by( :Vt_flavor));
Riepiloga(dtt, byGroup3 = by( :Z_width));
Per (nn =1, nn <= N elementi (byGroup0), nn++,
Per ( ii = 1, ii <= N elementi ( byGroup1 ), ii++,
Per (jj = 1, jj <= N elementi( byGroup2 ), jj++,
Per ( kk = 1, kk <= N elementi ( byGroup3 ), kk++,
dtt << select where(:Label == byGroup1[ii] & :Vt_flavor == byGroup2[jj] & :Z_width == byGroup3[kk] & :layout ==byGroup0[nn] );
//mostra(ii,jj,kk,pergruppo1[ii],pergruppo2[jj],pergruppo3[kk]);
sel = dtt << ottieni le righe selezionate;
Se (n righe(sel) > 0,
//mostra("interno",ii,jj,kk);
dt = dtt << sottoinsieme(righe selezionate(1), colonne selezionate(0));
gb = dt << Generatore di grafici(
Dimensioni (266, 228),
Mostra pannello di controllo (0),
Variabili (X( :nmos ), Y( :pmos ), Sovrapposizione( :PDK ) ),
Elementi (Punti (X, Y, legenda (5), Etichetta ("Etichetta per riga") ) ),
Mostra etichette(1),
Invia a rapporto(
Spedizione(
{},
"nmos",
ScaleBox,
{Etichetta riga(
{Mostra griglia principale (1), Mostra etichette secondarie (1), Mostra griglia secondaria (1)}
)}
),
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Potresti generare un codice il più breve possibile?
Iniziando con il caricamento di una tabella dati, ad esempio
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
e pubblicalo tramite:

Ottenere risposte rapide e utili alle tue domande
Ottenere rapidamente le risposte corrette alle domande corrette
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Mi scuso sinceramente per le domande stupide. Non capisco cosa intendessi con "Attiva l'etichetta". Sto solo eseguendo JSL sul mio database e non clicco su alcuna interfaccia grafica per attivare nulla. Pensavo che impostando la colonna "skew" come etichetta e poi aggiungendo "Etichetta per riga" come hai suggerito, avrebbe dovuto funzionare. Puoi spiegare meglio la parte di attivazione nello script JSL (senza clic su alcuna interfaccia grafica)? Grazie.
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Inoltre sto generando centinaia di grafici, quindi l'attivazione tramite clic non funzionerà per il mio scopo. Grazie
Re: Debug del codice JSL - aiuto necessario con "Etichetta"per favore condividi il tuo codice e possiamo controllare...
Il modo intelligente/pigro di usare JMP:
utilizzare l'interfaccia grafica e lasciare che JMP generi il codice.
Re: Debug del codice JSL - aiuto necessario con "Etichetta"In allegato il codice JSL e la tabella dati associata. Inoltre, la dimensione del grafico risulta sempre pari a Size(1401, 909), anche se il mio codice la riporta come Size(266, 228). Apprezzerei molto se potessi darci un'occhiata. Grazie mille per il tuo tempo e il tuo aiuto.
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Usare un'interfaccia grafica per creare lo script significa farlo una volta, copiare lo script e utilizzare il JSL generato da JMP in futuro. Quando JMP è in grado di creare correttamente quegli script (come le piattaforme di esecuzione), è il miglior programma di scripting JSL che si possa avere.
Per quanto riguarda il tuo problema: risolvi prima i problemi per un singolo grafico (quindi elimina i loop e usa un sottoinsieme). Dopo aver ottenuto il risultato desiderato, aggiungi i loop, perché semplificano notevolmente il debug. Quando eseguo il tuo grafico per uno di essi, ottengo questo.

Immagino che i tuoi problemi risiedano nella sceneggiatura grafica. Non capisco esattamente cosa tu stia cercando di fare al suo interno.
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Hai utilizzato il codice così com'è o hai modificato qualcosa?
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Names Default To Here(1);
dtt = Open("$DOWNLOADS/output_sorted_test.jmp");
dtt << Set Label Columns(:skew);
Summarize(dtt, byGroup0 = by(:layout));
Summarize(dtt, byGroup1 = by(:Label));
Summarize(dtt, byGroup2 = by(:Vt_flavor));
Summarize(dtt, byGroup3 = by(:Z_width));
nn = 1;
ii = 1;
jj = 1;
kk = 1;
dtt << select where(:Label == byGroup1[ii] & :Vt_flavor == byGroup2[jj] & :Z_width == byGroup3[kk] & :layout == byGroup0[nn]);
sel = dtt << get selected rows;
If(N Rows(sel) > 0,
dt = dtt << subset(selected rows(1), selected columns(0));
gb = dt << Graph Builder(
Size(266, 228),
Show Control Panel(0),
Variables(X(:nmos), Y(:pmos), Overlay(:PDK)),
Elements(Points(X, Y, legend(5), Label("Label by Row"))),
Show labels(1),
SendToReport(
Dispatch({}, "nmos", ScaleBox, {Label Row({Show Major Grid(1), Show Minor Labels(1), Show Minor Grid(1)})}),
Dispatch({}, "pmos", ScaleBox, {Label Row({Show Major Grid(1), Show Minor Labels(1), Show Minor Grid(1)})}),
Dispatch({}, "Graph Builder", FrameBox,
{Marker Size(6), Add Graphics Script(
6,
Description(""),
Summarize(dt, byGroup = by(:PDK));
colorList = {"Blue", "red", "Green", "Green"};
Fill Pattern([0]);
For(i = 1, i <= N Items(byGroup), i++,
Pen Color(colorList[i]);
theRows = dt << get rows where(
:PDK == byGroup[i] & :skew != "tttt" & :skew != "ff" & :skew != "fs" & :skew != "sf" & :skew != "ss"
);
If(Word(2, byGroup[i], "/") == "a",
Line Style("Dashed"),
);
theRows = theRows |/ theRows[1];
xMatrix = :nmos[theRows];
yMatrix = :pmos[theRows];
Line(xMatrix, yMatrix);
);
), Add Text Annotation(
Text(byGroup1[ii] || "_" || "Z" || byGroup3[kk] || "_" || bygroup2[jj] || "_" || bygroup0[nn]),
Background Color("White"),
Filled(0),
Font("Segoe UI", 14, "Plain")
)}
)
)
);
);
Write();
Re: Debug del codice JSL - aiuto necessario con "Etichetta"È molto strano. Ho provato con un grafico. In qualche modo non mostra l'etichetta. Ho anche provato a copiare il tuo codice e a eseguirlo: l'etichetta non viene visualizzata. Di seguito è riportato ciò che ottengo da un singolo grafico e, come puoi vedere, in qualche modo l'etichetta per riga non viene visualizzata (come previsto). Ho aggiunto nuovamente, ho rieseguito lo script, ma è uguale: nessuna etichetta.
Graph Builder(
Size( 1430, 909 ),
Show Control Panel( 0 ),
Variables( X( :nmos ), Y( :pmos ), Overlay( :PDK ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch( {}, "nmos", ScaleBox,
{Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 1 )} )}
),
Dispatch( {}, "pmos", ScaleBox,
{Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 1 )} )}
),
Dispatch( {}, "Graph Builder", FrameBox,
{Marker Size( 6 ), Marker Drawing Mode( "Normal" ),
Add Graphics Script(
5,
Description( "" ),
Summarize( dt, byGroup = by( :PDK ) );
colorList = {"Blue", "red", "Green", "Green"};
Fill Pattern( [0] );
For( i = 1, i <= N Items( byGroup ), i++,
Pen Color( colorList[i] );
theRows = dt << get rows where(
:PDK == byGroup[i] & :skew != "tttt" & :skew != "ff" & :skew != "fs" & :skew != "sf" &
:skew != "ss"
);
If( Word( 2, byGroup[i], "/" ) == "a",
Line Style( "Dashed" )
);
theRows = theRows |/ theRows[1];
xMatrix = :nmos[theRows];
yMatrix = :pmos[theRows];
Line( xMatrix, yMatrix );
);
), Add Text Annotation(
Text( "cgate_per_um_Z120_dev1_s9999019999d9999019999" ),
Fixed Size( 0 ),
Text Box( {87, 62, 341, 134} ),
Background Color( "White" ),
Font( "Segoe UI", 14, "Plain" ),
Filled( 0 )
)}
)
)
)
Nota: JSL copiato nell'oggetto JSL per facilitare la lettura da parte di TXNELSON
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Lo script che hai incollato non è lo stesso del mio script perché ho
Elements(Points(X, Y, legend(5), Label("Label by Row"))),
Show labels(1),
che non fai
Re: Debug del codice JSL - aiuto necessario con "Etichetta"Ho provato (frammento qui sotto). Non inserisce ancora l'etichetta nel grafico. Non ho idea di cosa ci sia che non va. Grazie.

Re: Debug del codice JSL - aiuto necessario con "Etichetta"A dire il vero, non ho idea di cosa ci sia che non va. Se eseguo lo script che ti ho fornito (con un leggero ridimensionamento della finestra), ottengo questo con JMP18.

E questo con JMP19

Re: Debug del codice JSL - aiuto necessario con "Etichetta"Vorrei aggiornare la versione JMP e vedere se funziona. Grazie mille.