一个循环会生成多个没有特定名称的图形生成器。 我想制作一个范围滑块,以允许我更改日志中所有图表的 X 轴范围(它们都具有相同的范围),但我不知道如何做到这一点。
惊人的! 为了使其成为范围滑块,我执行了以下操作:
名称默认为此处( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << 建模类型( "连续" );
gb1 = dt << 图形生成器(
尺寸(528、448)、
显示控制面板( 0 ),
变量(X(:年龄),Y(:身高)),
元素( 点( X, Y, 图例( 5 ) ) )
);
gb2 = dt << 图形生成器(
尺寸(528、448)、
显示控制面板( 0 ),
变量(X(:年龄),Y(:体重)),
元素( 点( X, Y, 图例( 5 ) ) )
);
slidervar = Report( gb1 )[axisbox( 1 )] << 获取最小值;
slidervar2 = Report( gb1 )[axisbox( 1 )] << 获取最大值;
新窗口(“示例”,
面板盒(“滑块盒”,
H 列表框(
rsb = 范围滑块框(
报告( gb1 )[axisbox( 1 )] << 获取最小值, 报告( gb1 )[axisbox( 1 )] << 获取最大值, slidervar, slidervar2,
(
报告( gb1 )[axisbox( 1 )] << Min( slidervar );
报告( gb1 )[axisbox( 1 )] << Max( slidervar2 );
报告( gb2 )[axisbox( 1 )] << Min( slidervar );
报告( gb2 )[axisbox( 1 )] << Max( slidervar2 );
);
)
)
)
);
这样我就可以为自己的脚本做我需要做的事情了! 吉姆,非常感谢你!
好的,我有一个可以制作图表的函数。
你是说创建一个空列表,例如 graphslist = {};
然后在函数中,
调用图形生成器一些变量,例如 a = table << Graph builder();
然后插入(graphslist, a);
你是这个意思吗?
只需将指向每个显示对象的指针捕获到列表中,然后您可以通过返回列表来引用每个对象来访问每个显示对象。
吉姆,
但我注意到您单独命名了所有图形生成器对象。
正如我在问题中所说,目前我的程序通过在循环中创建它们来工作,因此它们不被称为变量名。 因此,我不知道如何参考该报告。
最简单的方法是打开全局数据过滤器并选择 X 轴变量作为过滤器变量。 它将设置一个滑块,允许您更改范围。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << modeling type( "continuous" );
gb1 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
gb2 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
dt << Data Filter(
Location( {780, 189} ),
Mode( Show( 1 ), Include( 1 ) ),
Add Filter( columns( :age ) )
);
如果您想开发您可以设置一个滑块框来更改的最小值和最大值,您可以设置如下:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << modeling type( "continuous" );
gb1 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
gb2 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
slidervar = Report( gb1 )[axisbox( 1 )] << get min;
slidervar2 = Report( gb1 )[axisbox( 1 )] << get max;
New Window( "Example",
Panel Box( "Slider Box",
H List Box(
sb = Slider Box(
Report( gb1 )[axisbox( 1 )] << get min,
Report( gb1 )[axisbox( 1 )] << get max,
slidervar,
Report( gb1 )[axisbox( 1 )] << Min( slidervar );
Report( gb2 )[axisbox( 1 )] << Min( slidervar );
),
sb2 = Slider Box(
Report( gb1 )[axisbox( 1 )] << get min,
Report( gb1 )[axisbox( 1 )] << get max,
slidervar2,
Report( gb1 )[axisbox( 1 )] << Max( slidervar2 );
Report( gb2 )[axisbox( 1 )] << Max( slidervar2 );
)
)
)
);
您还可以向每个图形生成器添加一个图形脚本,用于检测 AxisBox(1) 的范围和原点的变化,然后当检测到变化时,从发生变化的图形中复制 AxisBox(1) 设置被检测到,到其他每个图。 显然,这更复杂,但是,它确实具有不必有一个带有滑块的单独窗口的优点。