你好社區,
我對 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 個,這應該非常有效。