使用页面/按行排列组织时如何调整图形生成器面板的大小嘿大家,
我希望有人能帮助我找出在图形生成器中调整面板大小的代码。
这是来自大类数据集的:

如果我想使用 JSL 将尺寸设置得更大(自动调整窗口已关闭),如下所示:

我该如何实现这个目标呢?
我需要此功能的原因是,目前如果您对“页面”列使用过滤器,那么图表会随着级别数的增加而变得越来越小。当您拥有大量级别时,图表会变得非常小,您甚至看不到调整面板大小的手柄。所以我必须选择一些级别,调整大小,再选择一些级别,调整大小等......非常烦人,并且消除了这项新图表生成器功能的一些优点。另一方面,如果您拥有大量级别,并且您在过滤器中删除级别时调整了大小,图表就会变得越来越大。
所以我希望能够通过 JSL 有一个输入框,以便轻松快速地更改大小。
希望这是有意义的,并感谢您的任何想法!
史蒂夫
自动化和脚本数据探索与可视化回复:使用页面/按行排列组织时如何调整图形生成器面板的大小想要根据您的代码添加我最终得到的结果,提供一个浮动窗口,我可以根据自己的喜好以交互方式调整面板大小:
//rev 5-5-24
Names Default To Here(1);
dt=current data table();
obj=current report()["Graph Builder"]<< get scriptable object;
obj1 = obj << Get Window Title;
s = Window(obj1)<< Get Window Size();
nw = New Window("Resize Graph Builder Page Panels",Show Menu( 0 ),Show Toolbars( 0 ),
V List Box(
h list box(
vlist box(
text box("frame Size Y"),
neb1=Number Edit Box( 250 );
),
vlistbox(
textbox("frame Size X"),
neb2=Number Edit Box( 350 );
)
),
Button Box("Update Frames",
Report(obj)<< Fit to Window("Off");
nebval1=neb1 << Get;
nebval2=neb2 << Get;
(Report(obj) << XPath("//FrameBox")) << Frame Size(nebval2, nebval1);
window(obj1) << Set Window Size( s );
),
)
);
nw << Size Window( 400, 200 );
window(obj) << On Close(window("Resize Graph Builder Page Panels")<<CLOSE window=""></CLOSE>回复:使用页面/按行排列组织时如何调整图形生成器面板的大小这非常有效,谢谢!!
回复:使用页面/按行排列组织时如何调整图形生成器面板的大小它必须以某种方式触发,最有可能是通过某些控件或处理程序触发(在该示例中,例如,您可以在应用过滤器处理程序之前使用类似f(0)的函数调用相同的函数)
查看更多...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
gb = dt << Graph Builder(
Size(569, 357),
Show Control Panel(0),
Replicate Linked Page Axes(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Page(:age, Levels per Row(3))),
Elements(Points(X, Y, Legend(91)), Smoother(X, Y, Legend(92)))
)
);
ldf = gb << Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14, 15, 16, 17}),
Display(:age, N Items(6))
)
);
change_frame_size = Function({a},
fbs = Report(gb) << XPath("//FrameBox");
fbs << Frame Size(500, 500);
);
change_frame_size(0);
rs = ldf << Make Filter Change Handler(change_frame_size);
以下是最简单的情况,通过按下按钮触发
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
V List Box(
Button Box("Update Frames",
(Report(window:gb) << XPath("//FrameBox")) << Frame Size(300, 300);
),
window:gb = dt << Graph Builder(
Size(569, 357),
Show Control Panel(0),
Replicate Linked Page Axes(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Page(:age, Levels per Row(3))),
Elements(Points(X, Y, Legend(91)), Smoother(X, Y, Legend(92))),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14, 15, 16, 17}),
Display(:age, N Items(6))
)
)
)
)
);
回复:使用页面/按行排列组织时如何调整图形生成器面板的大小谢谢 Jarmo!这真的很接近,但当我用新的尺寸运行这部分代码时,它看起来像这样:
f = Function({a},
fbs = Report(gb) << XPath("//FrameBox");
fbs << Frame Size(500, 500);
);
rs = ldf << Make Filter Change Handler(f);图形生成器不会更新图表的大小,除非我更改了筛选选项。有没有办法强制图表更新大小,而无需更改筛选器?
计划是有一个浮动窗口,我可以在选择完成后根据我选择的级别数输入不同的帧大小。
谢谢您提供的任何补充意见!
回复:使用页面/按行排列组织时如何调整图形生成器面板的大小我不确定除了通过 JSL 控制之外是否还有其他选项,但您可以更改框架大小(如果没有,这可能值得创建愿望清单项目。“锁定窗口大小”用于数据过滤器,因为我们已经有“锁定比例”)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
gb = dt << Graph Builder(
Size(569, 357),
Show Control Panel(0),
Replicate Linked Page Axes(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Page(:age, Levels per Row(3))),
Elements(Points(X, Y, Legend(91)), Smoother(X, Y, Legend(92)))
)
);
ldf = gb << Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14, 15, 16, 17}),
Display(:age, N Items(6))
)
);
f = Function({a},
fbs = Report(gb) << XPath("//FrameBox");
fbs << Frame Size(300, 300);
);
rs = ldf << Make Filter Change Handler(f);
您可能想要向图形生成器/窗口添加某种“强制尺寸”,这样窗口就不会一直调整大小。