FrameBox behält die Referenzlinien nicht bei, wenn es in ein anderes Anzeigefeld eingefügt wirdIch weiß, dass Referenzlinien eine Eigenschaft von Achsenfeldern sind, aber was ist eine Problemumgehung? Der Anwendungsfall besteht darin, Boxen auszurichten, um Elemente aus mehreren Diagrammen in einem zu kombinieren. Ich konnte meine Antwort in den Diskussionsforen hier nicht finden.
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"
Erweiterte statistische ModellierungInhaltsorganisationDatenmischung und -bereinigungBetreff: FrameBox behält Referenzlinien nicht bei, wenn es in ein anderes Anzeigefeld eingefügt wirdDer Vollständigkeit halber finden Sie hier ein Codebeispiel, das den Unterschied zwischen Referenzlinie und V/H-Linie mit << Grafikskript hinzufügen zeigt.
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)
)Betreff: FrameBox behält Referenzlinien nicht bei, wenn es in ein anderes Anzeigefeld eingefügt wirdIch versuche es mal. Nochmals vielen Dank für die schnelle Antwort!Betreff: FrameBox behält Referenzlinien nicht bei, wenn es in ein anderes Anzeigefeld eingefügt wird<< Add Graphics Script ist eine Erweiterung der FrameBox, daher empfehle ich Ihnen, von der Verwendung von Referenzlinien zur Verwendung der Line()-Funktion in << Add Graphics Script überzugehen, um Ihre Linien zu generieren.Betreff: FrameBox behält Referenzlinien nicht bei, wenn es in ein anderes Anzeigefeld eingefügt wirdDanke für die schnelle Antwort. Dies funktioniert nicht, da die Bildbox Achsen und Legenden enthält. Ich verwende eine Ausrichtungsbox, damit ich andere Elemente an der x-Achse ausrichten kann. Vereinfachtes Beispiel:
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 ) ) )
);
Ich würde mich freuen, einen alternativen Ansatz kennenzulernen. Anfangs habe ich versucht, Abstandshalter zu verwenden, die der Breite der Elemente entsprechen (mithilfe von << get width), aber das scheiterte, weil es einen Spielraum gab, den ich nicht berücksichtigen konnte.

Betreff: FrameBox behält Referenzlinien nicht bei, wenn es in ein anderes Anzeigefeld eingefügt wirdHängen Sie die PictureBox() anstelle der FrameBox() an
db1 << Append(report(gbBar)[PictureBox(1)]);
