一个循环会生成几个没有特定名称的图形构建器。 我想制作一个范围滑块,以允许我更改日志中所有图表的 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)] << get min;
slidervar2 = Report( gb1 )[axisbox( 1 )] << get max;
新窗口(“示例”,
面板盒(“滑块盒”,
H 列表框(
rsb = 范围滑块框(
报告(gb1)[axisbox(1)]<<获取最小值,报告(gb1)[axisbox(1)]<<获取最大值,slidervar,slidervar2,
(
报告(gb1)[轴箱(1)] << Min(slidervar);
报告(gb1)[轴箱(1)]<<最大(slidervar2);
报告(gb2)[axisbox(1)]<报告(GB2)[轴箱(1)]<<最大(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 ) )
);
如果你想开发你的,你可以设置一个 Slider Box 来改变 Min 和 Max 的值,你可以设置如下:
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 );
)
)
)
);
您还可以向每个 Graph Builders 添加一个图形脚本,用于检测 AxisBox(1) 的范围和原点的变化,然后在检测到变化时,从变化的图形中复制 AxisBox(1) 设置被检测到,到每个其他图表。 显然,这更复杂,但是,它确实具有不必有一个带有滑块的单独窗口的优点。