Débogage du code JSL - besoin d'aide avec « Label »Bonjour,
Dans mon code JSL, j'utilise
dtt<
et je peux voir dans le tableau que l'icône d'étiquette est ajoutée à côté de l'asymétrie. Ensuite, j'utilise le générateur de graphiques et, dans cette routine, j'ai
Afficher les étiquettes(1),
Lors de la génération des graphiques, les étiquettes ne s'affichent pas. Pourriez-vous m'aider ? Dois-je ajouter quelque chose ?
Merci beaucoup
Automatisation et scriptageRe: Débogage du code JSL - besoin d'aide avec « Label »En général, vous activez les étiquettes dans la section Étiquettes à gauche (cela peut varier selon le type de graphique).

Une fois que vous êtes satisfait de votre générateur de graphiques, copiez le 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: Débogage du code JSL - besoin d'aide avec « Label »vous devez activer les étiquettes dans le panneau de configuration :

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: Débogage du code JSL - besoin d'aide avec « Label »-
Re: Débogage du code JSL - besoin d'aide avec « Label »Merci pour les conseils, mais malheureusement cela ne fonctionne toujours pas. J'ai surligné les lignes correspondantes dans mon JSL.
dtt<
Résumer(dtt, byGroup0 = by (:layout));
Résumer( dtt, parGroupe1 = par( :Label ));
Résumer( dtt, byGroup2 = by( :Vt_flavor));
Résumer( dtt, byGroup3 = by( :Z_width));
Pour (nn = 1, nn <= N Éléments (byGroup0), nn++,
Pour ( ii = 1, ii <= N Items( byGroup1 ), ii++,
Pour ( jj = 1, jj <= N Items( byGroup2 ), jj++,
Pour ( kk = 1, kk <= N Items( byGroup3 ), kk++,
dtt << sélectionner où(:Label == byGroup1[ii] & :Vt_flavor == byGroup2[jj] & :Z_width == byGroup3[kk] & :layout ==byGroup0[nn] );
//afficher(ii,jj,kk,bygroup1[ii],bygroup2[jj],bygroup3[kk]);
sel = dtt << obtenir les lignes sélectionnées ;
Si (n lignes(sel) > 0,
//afficher("à l'intérieur",ii,jj,kk);
dt = dtt << sous-ensemble( lignes sélectionnées(1), colonnes sélectionnées(0));
gb = dt << Constructeur de graphes(
Taille ( 266, 228 ),
Afficher le panneau de configuration ( 0 ),
Variables( X( :nmos ), Y( :pmos ), Superposition( :PDK ) ),
Éléments( Points( X, Y, légende( 5 ), Étiquette("Étiquette par ligne") ) ),
Afficher les étiquettes(1),
Envoyer au rapport(
Expédition(
{},
"nmos",
ScaleBox,
{Ligne d'étiquette(
{Afficher la grille principale( 1 ), Afficher les étiquettes secondaires( 1 ), Afficher la grille secondaire( 1 )}
)}
),
Re: Débogage du code JSL - besoin d'aide avec « Label »Pourriez-vous générer un code, s'il vous plaît ? Le plus court possible.
En commençant par le chargement d'une table de données, par exemple
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
et publiez-le via :

Obtenez rapidement des réponses utiles à vos questions
Obtenir rapidement les bonnes réponses aux bonnes questions
Re: Débogage du code JSL - besoin d'aide avec « Label »Veuillez m'excuser pour cette question qui peut paraître naïve. Je ne comprends pas bien ce que vous entendez par « Activer l'étiquette ». J'exécute simplement du JSL sur ma base de données et je n'utilise aucune interface graphique pour activer quoi que ce soit. Je pensais qu'en définissant la colonne « skew » comme étiquette, puis en ajoutant l'option « Étiquette par ligne » comme vous l'avez suggéré, cela fonctionnerait. Pourriez-vous m'expliquer plus en détail la procédure d'activation dans le script JSL (sans passer par une interface graphique) ? Merci.
Re: Débogage du code JSL - besoin d'aide avec « Label »De plus, je génère des centaines de graphiques, donc l'activation par clic ne conviendra pas à mon besoin. Merci.
Re: Débogage du code JSL - besoin d'aide avec « Label »Veuillez partager votre code et nous pourrons vérifier…
La méthode astucieuse/paresseuse pour utiliser JMP :
Utilisez l'interface graphique et laissez JMP générer le code.
Re: Débogage du code JSL - besoin d'aide avec « Label »Vous trouverez ci-joint le code JSL et le tableau de données associé. De plus, la taille du graphique est systématiquement de `Size(1401, 909)`, alors que mon code la définit à `Size(266, 228)`. Pourriez-vous jeter un œil à ce problème ? Merci beaucoup pour votre temps et votre aide.
Re: Débogage du code JSL - besoin d'aide avec « Label »L'utilisation de l'interface graphique pour créer le script permet de le faire une seule fois, de le copier et de l'utiliser ensuite avec le JSL généré par JMP. Lorsque JMP est capable de créer correctement ces scripts (comme pour les plateformes d'exécution), il s'agit du meilleur générateur de scripts JSL à votre disposition.
Concernant votre problème : commencez par résoudre les problèmes liés à un seul graphique (supprimez donc les boucles et utilisez un sous-ensemble). Une fois que cela fonctionne comme prévu, ajoutez les boucles, car cela facilite grandement le débogage. Lorsque j'exécute votre graphique pour un seul graphique, j'obtiens ceci :

Je suppose que vos problèmes se situent au niveau du script graphique. Je ne comprends pas exactement ce que vous essayez de faire.
Re: Débogage du code JSL - besoin d'aide avec « Label »Avez-vous utilisé le code tel quel ou avez-vous modifié quelque chose ?
Re: Débogage du code JSL - besoin d'aide avec « Label »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: Débogage du code JSL - besoin d'aide avec « Label »C'est très étrange. J'ai essayé avec un seul graphique. Pour une raison inconnue, l'étiquette ne s'affiche pas. J'ai également essayé de copier votre code et de l'exécuter : l'étiquette ne s'affiche toujours pas. Ci-dessous, vous pouvez voir le résultat obtenu avec un seul graphique ; comme vous pouvez le constater, l'étiquette par ligne n'apparaît pas (contrairement à ce qui était prévu). J'ai ajouté le code en arrière-plan, relancé le script, et le résultat est le même : aucune étiquette n'apparaît.
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 )
)}
)
)
)
Remarque : Le JSL a été copié dans un objet JSL pour faciliter la lecture par TXNELSON.
Re: Débogage du code JSL - besoin d'aide avec « Label »Le script que vous avez collé n'est pas le même que le mien, car j'ai
Elements(Points(X, Y, legend(5), Label("Label by Row"))),
Show labels(1),
que vous ne faites pas
Re: Débogage du code JSL - besoin d'aide avec « Label »J'ai essayé cette solution (extrait de code ci-dessous). L'étiquette ne s'affiche toujours pas sur le graphique. Je ne comprends pas ce qui ne va pas. Merci.

Re: Débogage du code JSL - besoin d'aide avec « Label »Honnêtement, je n'ai aucune idée de ce qui cloche. Si j'exécute le script que je vous ai fourni (avec un léger redimensionnement de la fenêtre), j'obtiens ceci avec JMP18.

Et ceci avec JMP19

Re: Débogage du code JSL - besoin d'aide avec « Label »Je vais mettre à jour la version de JMP et voir si cela résout le problème. Merci beaucoup.