Annotations en dehors de la zone graphique : emplacement et annotations non copiées avec le graphiqueAnnotations en dehors de la zone graphique
Si vous annotez (en utilisant Outils>Annoter) à l'intérieur de la zone de graphique, ce texte fait partie du graphique lorsqu'il est copié — il semble qu'une annotation en dehors de la zone de graphique ne soit pas copiée avec le graphique.
Ce que je voudrais, c'est une seule ligne de code que je pourrais déposer dans chaque script qui noterait N en petit texte en bas à droite de chaque graphique (sous l'axe X), et serait copié avec le graphique.
Le pseudocode serait quelque chose comme Text (, "n=" || char())
Donc plusieurs sous-questions :
- Existe-t-il une astuce pour obtenir des annotations (via Outils> Annoter) qui se copient avec un graphique ?
- Quel code JSL utilisez-vous pour positionner le texte en bas à droite de l'arrière-plan d'un graphique ? (par exemple, existe-t-il un moyen de définir l'origine en bas à droite ?)
- Quel code JSL utilisez-vous pour obtenir le nombre de lignes non exclues dans une table ? Il semble que cela devrait être évident (quelque chose comme Rows () - Exclus Rows ()), mais je ne le vois pas ...
JMP 17, macOS
macOSPersonnalisation de masseRe : Annotations en dehors de la zone du graphique : emplacement et annotations non copiées avec le graphiqueBien merci!
Re : Annotations en dehors de la zone graphique : emplacement et annotations non copiées avec le graphiqueOui, il existe un moyen de le placer sous la zone de graphique, en supposant que vous avez JMP 17 et en supposant que vous travaillez avec le générateur de graphiques au lieu de la plate-forme Fit Y by X. L'astuce consiste à ajouter une boîte de légende, puis à la définir comme une table d'axes, puis à écraser les valeurs par défaut en supprimant toutes les étiquettes sauf une (j'ai également dû changer les étiquettes de coche en "diviseur court" pour que chaque étiquette s'affiche dans un tableau de contingence). Cela peut également être fait via des scripts; exemple ci-dessous.


dt = open ("$SAMPLE_DATA\Big Class.jmp");
//Caption box as regular axis table
graph_one = dt << Graph Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Variables( X( :sex ), Y( :age ) ),
Elements(
Mosaic( X, Y, Legend( 6 ) ),
Caption Box(
X,
Y,
Legend( 7 ),
Summary Statistic( "N" ),
Location( "Axis Table" )
)
),
SendToReport(
Dispatch(
{},
"sex",
ScaleBox,
{Label Row( 1, Tick Mark Style( "Short Mark" ) ),
Label Row( 2, Tick Mark Style( "Short Divider" ) )}
)
)
);
//overwritten axis label with custom number (500)
graph_two = dt << Graph Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Variables( X( :sex ), Y( :age ) ),
Elements(
Mosaic( X, Y, Legend( 6 ) ),
Caption Box(
X,
Y,
Legend( 7 ),
Summary Statistic( "N" ),
Location( "Axis Table" )
)
),
SendToReport(
Dispatch(
{},
"sex",
ScaleBox,
{Label Row( 1, Tick Mark Style( "Short Mark" ) ),
Label Row(
2,
{Tick Mark Style( "Short Divider" ),
Tick Mark( Label( "18" ), Label( "" ) ), //<----here
Tick Mark( Label( "22" ), Label( "500" ) )} //<--here
)}
)
)
);
Re : Annotations en dehors de la zone graphique : emplacement et annotations non copiées avec le graphiqueMerci! Cela fonctionne bien pour mettre le nombre dans le tableau lui-même (exemple ci-dessous). Existe-t-il un moyen de le placer sous la zone du graphique ?
Il semblerait que ce soit en bas à droite de LineupBox (ou AxisBox), mais je n'arrive pas à faire fonctionner votre approche avec ceux-ci. Suggestions?

Re : Annotations en dehors de la zone graphique : emplacement et annotations non copiées avec le graphiquePas sûr de la question 1 mais voici un script utilisant << Ajouter un script graphique pour ajouter du texte au coin inférieur droit des constructeurs de graphiques
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
Report(gb)[FrameBox(1)] << Add Graphics Script(
included_rows = N Rows(dt) - N Items(dt << Get Excluded Rows());
Text Color("Black");
Text(Right Justified,
{X Origin() + X Range(), Y Origin()},
Eval Insert("n=^included_rows^");
);
);

Vous devriez pouvoir transformer ce script en une expression/fonction/complément que vous pourrez ensuite facilement réutiliser.