Script de personnalisation d'ajustement bivarié conditionnel basé sur le groupe par colonneBonjour, je suis relativement nouveau dans JMP et j'utilise la plateforme de tracés bivariés pour générer une liste de tracés bivariés à partir d'un ensemble de données. J'ai commencé à utiliser un script JSL généré automatiquement pour ajouter des paramètres d'axe et de légende identiques à tous les tracés, comme indiqué ci-dessous :
Bivariate(
Y( :PeakValue ),
X( :"Duration (s)"n ),
By( :Checker Name ),
SendToReport(
Dispatch(
{},
"Duration (s)",
ScaleBox,
{Scale( "Log" ), Format( "Engineering SI", 9 ), Min( 0.0000000001 ),
Max( 0.001 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 0 )}
)}
),
Dispatch( {}, "PeakValue", ScaleBox, {Label Row( Show Major Grid( 1 ) )} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Drawing Mode( "Normal" ),
Row Legend(
Corner,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
Comme vous pouvez le voir ci-dessus, je regroupe l'ensemble de données par la colonne :Checker Name. Cependant, je voulais étendre ce script en ajoutant également des objets graphiques Rect() transparents pour créer des plages acceptables pour chacun des nuages de points. Cependant, les dimensions et l'emplacement de ces objets Rect() varient en fonction du tracé bivarié dans lequel ils sont tracés. En bref, je dois créer une clé de :Checker Name to Rect variables de dimensionnement qui sera correctement appliquée en fonction du tracé bivarié dans l’ensemble. Est-ce quelque chose de facile/plausible à intégrer dans le script pré-généré que j'ai ci-dessus ?
Merci!
Automatisation et scriptsAnalyse et modélisation des données de basePersonnalisation de masseRe : Script de personnalisation d'ajustement bivarié conditionnel basé sur un groupe par colonneVous pouvez essayer de le faire de manière interactive dans JMP (vous devrez probablement coder en dur les valeurs Rect() sur chaque nuage de points). Je suggérerais d'utiliser JSL avec une boucle.
Re : Script de personnalisation d'ajustement bivarié conditionnel basé sur un groupe par colonneComment recommanderiez-vous de diviser la fonction Bivariate avec By( :Checker Name ) en une boucle de Bivariate avec des noms de Checker uniques ?
-Jacob
Re : Script de personnalisation d'ajustement bivarié conditionnel basé sur un groupe par colonneEnregistrez la liste des références à une variable : biv = Bivariate( ... ). Vous pouvez parcourir la liste. Vous pouvez soit interroger les zones de plan pour déterminer le niveau de variable Par, soit utiliser la fonction Summarize() pour obtenir une liste des groupes. Ce sera dans le même ordre.
Re : Script de personnalisation d'ajustement bivarié conditionnel basé sur un groupe par colonneJ'envisage d'utiliser un tableau associatif pour attribuer un objet rect à chaque clé possible dans la colonne Nom du vérificateur. Pouvez-vous fournir un exemple d'itération sur une liste de zones de contour et d'ajout d'un objet rect() à chacune d'elles ? Je ne connais pas non plus la fonction Résumer.
Re : Script de personnalisation d'ajustement bivarié conditionnel basé sur un groupe par colonneJe suppose que vous utilisez JMP18. Lorsque vous utilisez By, vous obtenez une liste de plates-formes et vous pouvez ensuite parcourir celle-ci. Ensuite, il s'agit simplement de déterminer comment obtenir le titre, etc. (ou vous pouvez utiliser Summarize et dans ce cas, je construirais la liste de références d'une manière un peu différente). S'il est difficile de comprendre la boucle, vous pouvez d'abord simplement créer une seule plate-forme bivariée et la faire fonctionner, puis l'étendre aux boucles.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_rect = Associative Array();
aa_rect["M"] = Expr(Rect(80, 60, 120, 55));
aa_rect["F"] = Expr(Rect(90, 65, 140, 55));
bivs = dt << Bivariate(Y(:height), X(:weight), By(:sex));
For Each({cur_biv}, bivs,
ob = Report(cur_biv)[OutlineBox(1)];
obtitle = ob << get title;
show(obtitle);
category = Word(-1, obtitle, "=");
fb = ob[FrameBox(1)];
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Blue");
Pen Size(2);
Expr(aa_rect[category]);
)
));
);
