图形生成器 框架尺寸 JSL大家好,
这可能是一个简单而快速的解决方案。 但我有点努力寻找正确的方法。
我试图弄清楚如何使图表生成器中的所有图表具有一致的框架大小和一致的图例设置。 我运行一个 FOR 循环,在数据表末尾有数值。 它的范围可以是 1 列到多列,我尝试在 Y 轴上绘制所有列。
主要差异发生在 Y 轴只有一个参数时,图例不会显示,但有 2 个或更多参数时,图例会自动显示,我不必为其编写单独的 JSL 命令。 因此,由于图例设置中缺乏空间,每个图表看起来都不同。
关于如何解决这个问题有什么想法吗?
谢谢
回复:图形生成器框架尺寸 JSL具有匹配框架尺寸的图表?这在 Jmp 中可能吗?
我询问了 Jmp 支持 (TS-00076249) 并得到了答案:
是的,我想说这是可能的,但可能需要相当多的脚本编写为您想要制作的所有可能的图表完成此操作 - 特别是当您正在谈论图表生成器时。
要考虑当前使用的显示器的显示分辨率,您可以访问将返回显示器分辨率的 Windows dll。您可以使用它来根据需要缩放像素大小规格。但是,如果您在多显示器环境中工作,其中每个显示器可能具有不同的分辨率,则实际上不可能考虑分辨率,因为无法知道您的图形位于哪个显示器上。
好吧,那么,怎么样?
生成大小匹配的图形真的那么复杂吗?
使用案例:
我们使用 PowerPoint 来展示我们的 Jmp 分析。
为了实现页面之间的平滑过渡,我们希望创建具有相同框架大小的所有图形(页面 NxM 子图的外框大小相同 - 无轴)以及轴和 X/Y 的字体大小相同组标签。
回复:图形生成器框架尺寸 JSL我也开始希望将一些
Fit to Window( "Off" ),
和
Size(...)
可能会解决问题。
但是当我意识到在代码中@ErraticAttack这两个功能都用了我的希望破灭了。
在示例中,不同的 X 标签导致图形的大小完全不同。
只要整个图形(包括轴)周围没有矩形,就没有人会注意到两者具有相同的大小。
Y 轴大小不同时出现相同问题:

Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Cars.jmp" );
New Window( "TEST",
V List Box(
Graph Builder(
Size( 500, 200 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Fit to Window( "Off" ),
Variables( X( :Make ), Y( :Wt ) ),
Elements( Bar( X, Y ) )
)
,
Graph Builder(
Size( 500, 200 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Fit to Window( "Off" ),
Variables( X( :Make ), Y( :Wt ) ),
Elements( Bar( X, Y, Legend( 1 ) ) ),
SendToReport(
Dispatch( {}, "Wt", ScaleBox, {Format( "Engineering SI", 12 )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Weight" )} )
)
)
)
)
回复:图形生成器框架尺寸 JSL我知道这是很久以前的事了,但几个月前我们正在解决同样的问题并提出了这个:
Names Default to Here( 1 );
win = Get Window List();
// find graph builder windows
graphs = Filter Each({w}, win,
If(Length(w << XPath("//OutlineBox[@helpKey='Graph Builder']")) > 0, 1, 0)
);
// get the last Graph Builder
last_gb = graphs[N Items(graphs)][OutlineBox("Graph Builder")] << Get Scriptable Object;
// set size
last_gb << Fit to Window("Off");
// last_gb << Show Control Panel( 0 );
last_gb << Size(1000,800);
// copy picture
frame = (graphs[N Items(graphs)] << XPath( "//GraphBuilderBox" ))[1];
frame << Copy Picture;“适合窗口”是使输出图大小准确的关键。
回复:图形生成器框架大小 JSL这里有任何更新吗?
听起来像是Jmp 和 JSL 中的 Tiny Traps的候选者

绿色:“尺寸”
蓝色:框架尺寸
紫色:地块大小
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window("test",
H List Box(
Graph Builder(
Size( 500, 300 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :name ),
X( :age, Position( 1 ) ),
X( :sex, Position( 1 ) ),
Y( :height ),
Group X( :sex )
),
Elements( Points( X( 1 ), X( 2 ), X( 3 ), Y) ),
SendToReport(
Dispatch( {}, {"height vs. name & 2 more"}, TextEditBox,
{Set Text( "my title\!nspans over 2 lines" )}
),
Dispatch( {}, {:height}, TextEditBox,
{Set Text( "very long Y axis title " ), Rotate Text( "Horizontal" )}
)
)
);,
Graph Builder(
Size( 500, 300 ),
Show Control Panel( 0 ),
Variables( X( :sex ), Y( :height ), Group X( :age ) ),
Elements( Points( X, Y ) ),
SendToReport(
Dispatch( {}, {:height}, TextEditBox,
{Set Text( "x" ), Rotate Text( "Horizontal" )}
)
)
)));
回复:图形生成器框架尺寸 JSL这与我想要的相反——我需要框架框()只能是指定的尺寸。这是一些示例代码来说明这一点。这尺寸(500、500)被馈送到两者,但显然框架框()尺寸非常不(500, 500) 。
事实上,这甚至不是GraphBuilderContainerBox()您显示已设置为给定大小 - 您首先必须删除图例框() ,然后将剩余的(标题/轴/轴标题)设置为(500,500)尺寸。这太荒谬了!
实际上没有办法设置框架框() (例如,如果您在大纲框(“”,图形生成器(...))并做了轮廓框[框架框( 1 )] << 框架尺寸( 500, 500 ))在实例化之前/期间图形生成器()盒子。它只能在创建窗口和图形后完成。
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Cars.jmp" );
New Window( "TEST",
H List Box(
Graph Builder(
Size( 500, 500 ),
Show Control Panel( 0 ),
Fit to Window( "Off" ),
Variables(
X( :Make ),
X( :Model, Position( 1 ) ),
X( :Year, Position( 1 ) ),
X( :Protection, Position( 1 ) ),
X( :"D/P"n, Position( 1 ) ),
X( :Size, Position( 1 ) ),
X( :Doors, Position( 1 ) ),
Y( :Wt ),
Color( :Model )
),
Elements(
Bar(
X( 1 ),
X( 2 ),
X( 3 ),
X( 4 ),
X( 5 ),
X( 6 ),
X( 7 ),
Y,
Legend( 9 )
)
)
)
,
Graph Builder(
Size( 500, 500 ),
Show Control Panel( 0 ),
Fit to Window( "Off" ),
Variables( X( :Make ), Y( :Wt ) ),
Elements( Bar( X, Y, Legend( 11 ), Error Interval( "Standard Error" ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Grid Line Order( 1 ), Reference Line Order( 2 )}
)
)
)
)
)我需要的是有图表的区域(框架框() )是给定的固定大小,与我的轴的大小或文本的复杂程度和长度无关。

回复:图形生成器框架尺寸 JSLSize 元素设置 Frame(FrameBox()) 大小。

它没有设置 GraphBuilderContainerBox()

我猜这就是您期望设置的尺寸。
回复:图形生成器框架尺寸 JSL这是行不通的。框架大小取决于框架周围图例/文本区域的大小。
回复:图形生成器框架尺寸 JSL@vishwasanj
大小参数及其参数可用于定义和限制窗口的大小,如下例所示。
Graph Builder(
Size( 1230, 650 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Y( :weight ) ),
Elements( Position( 1, 1 ), Line( X, Y, Legend( 1 ) ) ),
Elements( Position( 1, 2 ), Bar( X, Y, Legend( 2 ) ) )
)
回复:图形生成器帧大小 JSL我提交了一个愿望:
能够生成具有特定绘图大小的图表的功能
让我们来看看 ...
回复:图形生成器框架尺寸 JSL嗨,维什瓦桑吉,
我也遇到这个问题。 与您分享我的解决方案,尽管这可能不是一个有效的方法。
为了简单起见,我仅解释 X 轴(水平方向)。
假设标准模板 Framebox 大小为 500,则整个图形大小为 535。 这意味着我们的大小不属于 Framebox,大小为 35。
然后,我们有一个由一些 for 循环生成的图,在分配帧大小 = 500 后,整体大小 = 550。
然后,考虑到这些图将导出为固定总大小 png,如果我们具有相同的帧大小与整体大小比率,我们可以具有相同的帧大小。
也就是说,我们可以在上一张图中加上“dx”,使比例相同。
500:535=(500+dx):(550+dx+dx2),
其中 dx2 是应用 dx 后轴长度的增加。
不过,根据我的经验,dx2基本上可以忽略不计。
因此,我们可以调整550宽度的图片,帧大小=500+dx,其中
500:535=(500+dx):(550+dx)。
导出为类似尺寸的 png 后,我们可以获得相同帧尺寸的图片。回复:图形生成器框架尺寸 JSL看看我的帖子吧,希望对你有帮助。回复:图形生成器框架大小 JSL愿望的新链接(旧链接似乎已损坏):
生成具有特定绘图大小的绘图的功能
与此同时,这个愿望已经收集了 15 个 Kudos:)
回复:图形生成器帧大小 JSL现在我们有 26 个 Kudos。