插入另一个显示框时,FrameBox 不保留参考线我知道参考线是轴盒的属性,但是解决方法是什么? 用例是使用 Lineup 框将多个图中的元素合并为一个。 我无法在此处的讨论板上找到答案。
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"
高级统计建模内容组织数据混合和清理回复:FrameBox 插入另一个显示框时不保留参考线为了完整起见,这里是一个代码示例,显示了参考线和 V/H 线与 << 添加图形脚本之间的差异。
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)
)回复:FrameBox 插入另一个显示框时不保留参考线我尝试一下。 再次感谢您的快速回复!回复:FrameBox 插入另一个显示框时不保留参考线<< 添加图形脚本是 FrameBox 的扩展,因此我建议您从使用参考线转向使用 << 添加图形脚本中的 Line() 函数来生成线条。回复:FrameBox 插入另一个显示框时不保留参考线感谢您及时的回复。 这不起作用,因为图片框包含轴和图例。 我正在使用排列框,以便我可以将其他元素与 x 轴对齐。 简化示例:
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 ) ) )
);
我很乐意学习另一种方法。 最初,我尝试使用与元素宽度匹配的间隔框(使用 << get width),但失败了,因为有一些我无法解释的边距。

回复:FrameBox 插入另一个显示框时不保留参考线附加 PictureBox() 而不是 FrameBox()
db1 << Append(report(gbBar)[PictureBox(1)]);
