设置图形生成器图表的标题我在 JMP 18 中编写了一个脚本,使用“图形生成器”、“拟合组”创建 3 行的折线图。基本上,表格包含多个“生物反应器”中多个“时间点”的“分析物”的测量值。在 JMP 18 中,我为每个图表都设置了一个标题,但使用 JMP 17 的同事发现标题缺失,导致图表毫无意义。我完全不知所措!有什么建议可以添加标题吗?
脚本如下:
newWindow = New Window(reportName, tb = Tab Box());
//loop through the dataTables and add tab page box for each with a local data filter for dilution factor on left, and line charts on the right
for( i = 1, i <= NItems(dataTables), i++,
tb << Add(
Tab Page Box(
Title(dataTables[i] << get name),
Data Filter Context Box(
H List Box(
dataTables[i] << Data Filter(
Local,
Add Filter( columns( :Dilution Factor, :Type ) ),
Mode( Select( 1 ), Show( 1 ), Include( 1 ) )
),
V List Box(
dataTables[i] << Fit Group(
Graph Builder(
Size( 300, 300 ),
Show Control Panel( 0 ),
Variables(
X( :Time point ),
Y( :"Mean(Value)"n ),
Overlay( :Vessel )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
By( :Analyte )
),
<<{Arrange in Rows( 3 )}
)
)
)
)
)
)
);
tb << set selected(1);In JMP 17 the title highlighted with the red arrow is missing for each chart:
自动化和脚本回复:设置图形生成器图表的标题为了排除偏好设置中的奇怪设置,请比较以下输出:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "test",
dt << Fit Group(
Graph Builder(
Ignore Platform Preferences(1), // next step: disable this line
Size( 300, 300 ),
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Line( X, Y, ) ),
By( :age )
),
<<{Arrange in Rows( 3 )}
)
);
下一步:禁用该线路并再次检查。
如果样本数据集没有问题,我们就必须在您的数据中找到问题。
-> 可以分享吗?
回复:设置图形生成器图表的标题您的数据过滤器在 JMP17 中损坏
Names Default To Here( 1 );
dts = {};
Insert Into(dts, Open("$SAMPLE_DATA/Big Class.jmp"));
Insert Into(dts, Open("$SAMPLE_DATA/Big Class Families.jmp"));
nw = New Window("", tb = Tab Box());
For(i = 1, i <= N Items(dts), i++,
tb << Add(
Tab Page Box(Title(dts[i] << get name),
Data Filter Context Box(
H List Box(
/*dts[i] << Data Filter(
Local,
Add Filter(
columns(:sex)),
Mode(Select(1), Show(1), Include(1))
),*/
V List Box(
dts[i] << Fit Group(
Graph Builder(
Size(300, 300),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
),
<<{Arrange in Rows(3)}
)
)
)
)
)
)
);
如果您想使用<
这很可能不是很强大,但可以提供一些你可以做什么的想法(使用列中的值而不是依赖于哪里的表达式很可能是更强大的选项)
Names Default To Here( 1 );
dts = {};
Insert Into(dts, Open("$SAMPLE_DATA/Big Class.jmp"));
Insert Into(dts, Open("$SAMPLE_DATA/Big Class Families.jmp"));
nw = New Window("", tb = Tab Box());
For(i = 1, i <= N Items(dts), i++,
tb << Add(
Tab Page Box(Title(dts[i] << get name),
Data Filter Context Box(
H List Box(
dts[i] << Data Filter(
Local,
Add Filter(
columns(:sex)),
Mode(Select(1), Show(1), Include(1))
),
V List Box(
dts[i] << Fit Group(
Graph Builder(
Size(300, 300),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
),
<<{Arrange in Rows(3)}
)
)
)
)
)
)
);
wait(0);
If(Word(1, JMP Version(), ".") == "17",
gb_obs = nw << XPath("//OutlineBox[@helpKey = 'Graph Builder']");
For Each({gb_ob}, gb_obs,
gb = gb_ob << Get Scriptable Object;
s = gb << get script;
w = Extract Expr(s, Where(Wild List()));
a = Substitute(Char(Arg(w, 1)), "==", "=");
gb << Title("Graph Builder " || Substr(a, 2))
);
);
编辑:如果使用数据过滤器,标题将会被破坏
回复:设置图形生成器图表的标题可能最简单的方法是针对不同的版本使用不同的方法,因为 JMP18 中按列工作的方式发生了变化,而且并非所有方法都可以同时使用
Names Default To Here( 1 );
dts = {};
Insert Into(dts, Open("$SAMPLE_DATA/Big Class.jmp"));
Insert Into(dts, Open("$SAMPLE_DATA/Big Class Families.jmp"));
nw = New Window("", tb = Tab Box());
For(i = 1, i <= N Items(dts), i++,
tb << Add(
Tab Page Box(Title(dts[i] << get name),
Data Filter Context Box(
H List Box(
dts[i] << Data Filter(
Local,
Add Filter(
columns(:sex)),
Mode(Select(1), Show(1), Include(1))
),
If(Word(1, JMP Version(), ".") == "17",
Lineup Box(N Col(3),
gb = Graph Builder(
Size(300, 300),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
)
)
,
gb = Graph Builder(
Size(300, 300),
Group Options(Layout("Arrange in Rows", N Across(3))),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Line(X, Y, )), By(:age)
)
)
)
)
)
)
);
如果您希望用户能够更改每行中的项目数,您可以添加大纲框和脚本。
回复:设置图形生成器图表的标题正如@jthi指出的那样,数据过滤器是造成差异的原因之一。在 JMP 18+ 中,Fit Group 对数据过滤器的响应方式已经发生了变化。
JMP 17 和 JMP 18 之间的另一个重大区别是增加了分组平台。在 JMP 18 中,这个新平台具有与“拟合组”类似的布局选项。在 JMP 17 中,您可以用“排列框”替换“拟合组”布局。将两者结合起来,这个脚本对我来说在两种情况下都运行良好:
dataTables = EvalList({
Open("$SAMPLE_DATA/Big Class.jmp"),
Open("$SAMPLE_DATA/Big Class Families.jmp")
});
newWindow = New Window("Reports", tb = Tab Box());
//loop through the dataTables and add tab page box for each with a local data filter for dilution factor on left, and line charts on the right
for( i = 1, i <= NItems(dataTables), i++,
tb << Add(
Tab Page Box(
Title(dataTables[i] << get name),
Data Filter Context Box(
H List Box(
dataTables[i] << Data Filter(
Local,
Add Filter( columns( :sex ) )
),
V List Box(
Line Up Box(NCol(3),
dataTables[i] << Graph Builder(
Size( 300, 300 ),
Show Control Panel( 0 ),
Variables(
X( :height ),
Y( :weight )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
By( :age ),
Group Options( Layout( "Arrange in Rows", N Across( 3 ) ) )
)
)
)
)
)
)
)
);
tb << set selected(1);
17/18 之间的布局会有所不同 - 在 JMP 17 中,LineUpBox 管理网格,而在 JMP 18 中,Group Platform 管理布局,并且所有 LineUpBox 都只有 1 个子项。
您的另一个选择可能是使用 Graph Builder 中的 Wrap 角色而不是使用 By,但这会为您提供共享的轴和图例,而这可能不是您想要的。
-和
回复:设置图形生成器图表的标题另一个选择:让同事更新到 JMP18.1 并使用 JMP18 引入的新页面选项:)
给他的奖励:
查找不再有问题-还是找不到?

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Variables(
X( :height ),
Y( :weight ),
Page( :age, Levels per Row( 3 ) ),
Overlay( :sex )
),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
回复:设置图形生成器图表的标题感谢您的帮助 - 花了几天时间在 JMP 17 中进行测试,但运行良好。
回复:设置图形生成器图表的标题非常感谢您的建议。我最终对 JMP 17 和 JMP 18 都使用了 Line Up Box