FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre zone d'affichageJe sais que les lignes de référence sont une propriété des Axis Boxes, mais quelle est une solution de contournement ? Le cas d'utilisation consiste à aligner des boîtes pour combiner des éléments de plusieurs tracés en un seul. Je n'ai pas pu trouver ma réponse sur les forums de discussion ici.
dt = Data Table("Big Class");
gbBar = Graph Builder(
Size( 521, 452 ),
Show Control Panel( 0 ),
Variables( X( :age ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport(
Dispatch(
{},
"age",
ScaleBox,
{Add Ref Line( 1.5, "Solid", "Medium Dark Red", "", 1 )}
)
)
);
nw = New Window("for testing",
OutlineBox("stuff",
db1 = H List Box();
)
);
db1 << Append(report(gbBar)[FrameBox(1)]);jmpversion()
/*:
"14.3.0"
Modélisation statistique avancéeOrganisation du contenuMélange et nettoyage des donnéesRe : FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre boîte d'affichagePour être complet, voici un exemple de code montrant la différence entre la ligne de référence et la ligne V/H avec << Add Graphics Script.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gbBar = dt << Graph Builder(
Size( 521, 452 ),
Show Control Panel( 0 ),
Variables( X( :age ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "age", ScaleBox, {Add Ref Line( 2.5, "Solid", "Medium Dark Red", "", 1 )} ) )
); // reference lines do not show up in FrameBox
fboxBar = Report( gbBar )[FrameBox( 1 )];
fboxBar <<
Add Graphics Script(
1, // draws the line first
Pen Color( "gray" );
Pen Size( 1 );
V Line([0.5, 1.5]);
); // graphics script applies to frame box, as required
nw = New Window("for testing",
lu1 = Lineup Box(fboxBar)
)Re : FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre boîte d'affichageJ'essaie. Merci encore pour la réponse rapide !Re : FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre boîte d'affichage<< Add Graphics Script est une extension de FrameBox, je vous suggère donc de passer de l'utilisation des lignes de référence à l'utilisation de la fonction Line() dans << Add Graphics Script pour générer vos lignes.Re : FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre boîte d'affichageMerci pour la réponse rapide. Cela ne fonctionnera pas car la Picture Box contient des axes et une légende. J'utilise une zone d'alignement pour pouvoir aligner d'autres éléments sur l'axe des x. Exemple simplifié :
dt = Data Table( "Big Class" );
gbBar = Graph Builder(
Size( 521, 452 ),
Show Control Panel( 0 ),
Variables( X( :age ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "age", ScaleBox, {Add Ref Line( 1.5, "Solid", "Medium Dark Red", "", 1 )} ) )
);
nw = New Window( "for testing",
Outline Box( "complicated plot",
Spacer Box( Size( 2, 10 ) ),
lu1 = Lineup Box( N Col( 3 ), Spacing( 0 ) )
)
);
lu1 << Append( Report( gbBar )[AxisBox( 2 )] );
lu1 << Append( Report( gbBar )[FrameBox( 1 )] );
lu1 << Append( Report( gbBar )[LegendBox( 1 )] );
//end of row
lu1 << Append( Spacer Box() );
lu1 << Append( Report( gbBar )[AxisBox( 1 )] );
lu1 << Append( Spacer Box() );
//end of row
lu1 << Append( Spacer Box() );
lu1 << Append( insrt_icons = H List Box() );
lu1 << Append( Spacer Box() );
numXAxisWidth = (gbBar << report)[AxisBox( 1 )] << get width;
numAges = N Items( Associative Array( Column( dt, "age" ) ) << get keys );
numOneIncr = (numXAxisWidth) / (numAges);
For( _i = 1, _i <= numAges, _i++,
insrt_icons << Append( Spacer Box( Size( numOneIncr, numOneIncr ), Color( _i ) ) )
);
Je serais heureux d’apprendre une approche alternative. Au départ, j'ai essayé d'utiliser des zones d'espacement qui correspondent à la largeur des éléments (en utilisant << get width), mais cela a échoué car il y avait une marge que je ne pouvais pas prendre en compte.

Re : FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre boîte d'affichageAjoutez le PictureBox() plutôt que le FrameBox()
db1 << Append(report(gbBar)[PictureBox(1)]);
