你好社区,
我对 jmp 比较陌生,有一个等高线图问题。
我进行了 20 个设计为中心复合的实验。 我为我的数据拟合了一个响应面模型。
然后我使用该模型对我的整个设计空间生成预测。 然后我做了预测的等高线图。
有没有一种方法可以将我的实验数据点(比如用 x 标记)添加到等高线图中。 还有一种方法可以用我在实验中发现的因变量值来标记这些数据点吗?
附件是我用油漆画的图像来说明我想做什么。 我不知道如何编程,所以回复菜单选择和/或屏幕截图将是最有帮助的。 非常感谢你
感谢你的回复。 我无法理解脚本。 但我确实想出了一个办法。 我使用图形菜单中的等高线图创建了等高线图。 我还创建了自变量的散点图。 我将散点图中的帧内容复制到等高线图中。 然后我用文本注释手动标记这些点。
你好@AlexandruS ,
欢迎来到社区! 对于新的 JMP 用户来说,这有点麻烦,因为我们将不得不编写大量的 JMP 脚本,但我们开始吧:
我假设您正在 Fit Model 中查看等高线刻画器,而不是在单独的自定义刻画器中。无论哪种方式,都适用相同的一般步骤。我正在使用示例数据库中的自定义 RSM 示例数据集。
首先打开一个新脚本并创建一个对数据表的变量引用。在这里,我只是打开自定义 RSM 表。
dt = Open("$Sample_Data\Design Experiment\Custom RSM.jmp");您需要获取包含分析器的报告的脚本。如果它来自 Fit Model,脚本将类似于 Fit Model(Y(:Y), Effects(...),...);我们需要获得对报告窗口的引用,以便我们可以自定义分析器的内容。以下是我如何使用 Custom RSM 示例:
rpt = (
dt << Fit Model(
Y( :Y ),
Effects(
:X1 & RS,
:X2 & RS,
:X3 & RS,
:X1 * :X1,
:X1 * :X2,
:X2 * :X2,
:X1 * :X3,
:X2 * :X3,
:X3 * :X3
),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Screening" ),
Run(
Contour Profiler(
1,
Term Value(
X1( 0, Lock( 0 ), Show( 1 ) ),
X2( 0, Lock( 0 ), Show( 1 ) ),
X3( 0, Lock( 0 ), Show( 1 ) )
),
Contour Value( Y( 62.703, Min( 52.5 ), Max( 75 ) ) ),
Grid Density( "40 x 40" ),
Contour Grid( 50, 80, 5, Y ),
Horizontal Factor( :X1 ),
Vertical Factor( :X2 ),
Y Colors( 21 ),
Up Dots( 0 )
),
:Y << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Effect Details( 0 ), Sorted Estimates( 0 ),
Scaled Estimates( 0 ), Plot Actual by Predicted( 1 ), Plot Regression( 0 ),
Plot Residual by Predicted( 1 ), Plot Residual by Row( 1 ),
Plot Studentized Residuals( 0 ), Plot Effect Leverage( 0 ),
Box Cox Y Transformation( 1 ), Show VIF( 1 )}
)
)
) << Report;请注意,我在 Fit Model 脚本之前添加了“rpt = (dt <<”,然后将其放在后端:“) << Report;”。变量“rpt”现在包含对拟合模型报告窗口的引用。
接下来,我们需要获取您在等高线刻画器中绘制的变量的值。在我的示例中,2 个变量是 x1 和 x2。我还需要点标签的 Y 值。
//plotted points
x1_vals = :x1 << Get Values;
x2_vals = :x2 << Get Values;
//values used in labels
y_vals = :y << Get Values;
现在,我可以添加一个图形脚本来绘制分析器中的点和文本,如下所示:
rpt["Contour Profiler"][FrameBox(1)] << Add Graphics Script(
Marker(x1_vals, x2_vals);
for(i=1,i<=N Row(dt),i++,
text(eval list({x1_vals[i],x2_vals[i]+0.05}),char(y_vals[i]));
)
);
括号中的内容帮助我向下导航显示树以到达包含绘图的框架框。我使用 Marker() 来添加点。我使用循环来添加标签。
最终结果如下所示:
请注意,我在彼此之上绘制了一些点和标签,因为我有第三个因素 X3。我们可以进一步自定义它以防止标签彼此重叠,但您可能还想将 x3 的值添加到所有这些标签中。基本上,这个解决方案不能很好地扩展超过 2 个因素,但如果你只有 2 个,这应该非常有效。