FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre boîte d'affichageJe sais que les lignes de référence sont une propriété des Axis Boxes, mais qu'est-ce qu'une solution de contournement? Le cas d'utilisation est les boîtes Lineup 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"
GraphiqueScriptingRe: FrameBox ne conserve pas les lignes de référence lorsqu'il est inséré dans une autre boîte d'affichageAjouter le PictureBox () plutôt que le FrameBox ()
db1 << Append(report(gbBar)[PictureBox(1)]);

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 zone d'image contient des axes et une légende. J'utilise une boîte de programmation 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 boîtes d'espacement qui correspondent à la largeur des éléments (en utilisant << get width), mais cela a échoué car il y avait une marge dont je ne pouvais pas tenir compte.
