建立自訂報告在我們的線上課程中了解更多信息
影片、練習和測驗。
按任意順序選擇並學習課程。
JMP 腳本語言簡介

在此示範中,我們將使用預先編寫的腳本來了解如何製作自訂報告。因此,在課程日誌的某一部分中,有一個名為 NOx 資料的腳本,用於記錄氮氧化物資料。我們有六種不同的準備。然後我們記錄了六種不同製劑的每個重複樣本的氮氧化物濃度的對數。所以劇本是預先寫好的。在課程日誌中,它被稱為自訂 NOx 報告腳本。我將逐一進行講解。但我實際上想運行整個程序,這樣我們就可以在查看腳本的每個部分的作用之前看到最終的結果。因此我將運行整個過程。該腳本確實創建了在圖形生成器中使用的摘要表。我們將對此進行仔細研究,因此我們不只是使用原始數據。但自訂報表是一個選項卡式報表。在第一個選項卡“%CV”上,我們有一個即時圖形生成器平台。所以這個紅色三角形是我在圖形產生器中看到的典型的紅色三角形選單。然後,我們計算出每個水平的變異係數或 %CV。這裡,我們有一個由腳本創建的自訂紅色三角形選單,可以讓我指定報告中數字列的小數位數。在第二個選項卡「背景資訊」中,我獲得了每個層級的原始數據、用於計算變異係數的平均值和標準差以及計算值。如果我在紅色三角形選單中做出了選擇——實際上我就會這麼做。在 %CV 的前面選項卡中,我將轉到紅色三角形並選擇兩個小數。該腳本正在查看此報告中的所有數字列框。那麼讓我們看看它是如何被建構的。因此,腳本所做的第一件事就是將單向訊息發送到原始數據表,其中包含氮氧化物的對數 - Y 角色中氮氧化物濃度的對數和 X 角色中的製劑的對數。我需要計算變異係數的是平均值和標準差報告表。因此我請求將其打開。我要說的是,有很多方法可以從 JMP 中獲得變異係數,而無需手動計算。但是,我們再次說明了一些將值作為矩陣獲取並使用這些矩陣計算的想法。因此我將運行這些行,這裡是帶有我請求的表的單向輸出。現在,我們看到了獲取報告層的其他語法。使用這種語法的一個優點是,如果我不需要該報告中的所有內容,我可以簡單地請求,在本例中,我想要的表格的大綱項 - 平均值和標準差。這樣,當我訪問顯示框時,我可以稍微簡化我的程式碼。我會將其儲存在變數 ob 中。這裡,我們的慣例是簡單地使用輪廓框的縮寫。你看到當我懸停時,它已經儲存了一個值,因為我已經運行了整個腳本。但我將重新分配它。現在,線和正在檢索等級的列,然後檢索平均值和標準差的列。對於級別,我根本不需要操作此列中的值。我只是想在我的自訂報告的“估計”表和背景資訊“所有結果”表中使用它。因此,對於我只需要副本的展示盒,我可以做的一件巧妙的事情就是發送訊息「克隆盒」。即使我關閉了單向窗口,這也只會將此顯示框的複製儲存在 Levels 中。因此我們用 String Col Box 對變數 ob 進行下標現在,我們可以再次使用列標題,而且這樣做當然不會有什麼壞處。但因為我們只儲存了這個顯示框 - 或將對它的引用儲存在 ob 中,所以使用帶有索引值的簡單語法相當容易。因此我將運行行,因此 Levels 現在儲存一個顯示框,特別是您可以在日誌中看到的字串列框。我需要在計算中使用平均值和標準差。所以我不能簡單地複製它們。我需要將這些值作為矩陣獲取並將它們儲存在變數 mMeans 或均值矩陣中。您可以在日誌中看到,或將滑鼠懸停在 mMeans 上也可以看到這些值。標準差也是同樣的情況。因此我運行它,然後再次,您可以 - 我會把它弄小一點 - 您可以在日誌中看到這些值。 Line 創建了一個名為 mCVs 的變量,這只是對變異係數的再次計算。這是變異性的相對測量,我們用標準差除以平均值,然後乘以,所以我將運行線,所以現在我有了變異係數。此時,我不需要該平台的任何其他東西。所以我要將訊息發送到 ow——這將發送到分析層物件參考——以關閉該視窗。我總是建議,當您的腳本可以關閉視窗時,無論是分析還是不再需要的資料表,請繼續讓您的腳本關閉這些視窗。因為如果我們不再需要它們打開,我們就不需要它們佔用記憶體。現在進行下一步,我想在我的自訂報告中使用圖形產生器。並且圖形產生器目前不將變異係數作為其匯總統計數據之一進行計算。因此,解決方法是使用變異係數建立此匯總表(內置於「匯總表」命令中),然後使用它作為圖形產生器的基礎。因此,在我獲得摘要表之前,我想關閉運行整個腳本時出現的摘要表。當我關閉它時,我收到警告,有另一個視窗打開了,所以我會說,繼續關閉所有視窗。這會立即從我的自訂報告中刪除圖形產生器。因此,目前,實際上沒有任何理由保持此範例自訂報告保持開啟。我們將在繼續執行腳本時重新建立它。因此我也會關閉這個。因此,行將「摘要」作為訊息傳送到原始資料表,我們根據準備情況進行分組。此統計數據就是變異係數。因此我將運行線現在,我擁有建立自訂報告所需的一切。因此我們使用新視窗。我將把由此創建的顯示框存儲在變數 nw 中,以便我可以與其通信。我將新視窗命名為“自訂報告”,然後我想為這些選項卡編寫腳本。因此我們指定Tab Box。然後,選項卡的數量就由您提供的選項卡頁框參數的數量決定。所以在這種情況下我們會有。 Tab Page Box 的第一個參數是標題。第一個叫做 %CV。然後,H 列錶框給我一個包含圖形產生器的水平列錶框。因此我實際上正在現場啟動這項活動。這就是我在此視窗中獲取此實時平台的方法,即透過讓該啟動發生在顯示框中。這是我可能從以交互方式創建圖形生成器並將其發送到匯總表中獲取的語法。然後,我在 H 列錶框中排列的另一件事是大綱框,稱為估計值,它將具有包含儲存在層級中的字串列框的表格框。我的腳本建立了一個帶有 %CV 值的數字列框。第二個標籤頁框是背景訊息,使用輪廓框將其標記為所有結果。並且在輪廓框內,表格框水平排列四個數字列框。所以我要把它弄得更高,這樣我就能確保抓住我想要的線,這些線是通過的,然後我會運行那部分。所以這並不完整。這是我的自訂報告的起點。我認為我現在可以讓腳本視窗稍微窄一點,這樣我們就可以並排看到它們。因此,Graph Builder 預設沒有線,所以這是我想要添加的內容之一。我想調整它的大小,因為我不需要這麼大的圖表。我想將紅色三角形選單加入估計大綱項目。請注意,在腳本中,當我在自訂報告的第一個標籤上建立估計值的大綱框時,我將結果儲存在 ob 中。這是我之前從單向平台取得平均值和標準差時使用的變數名稱。所以在這裡,我只是使用了縮寫並覆蓋了該值,因為我不需要以前的值。因此,如果我現在向下滾動以查看腳本的其餘部分,我會向儲存在 ob 中的顯示框(即估計大綱框)發送一條訊息「設定選單腳本」。設定選單腳本將選單項目清單與選擇該選單項目時執行的表達式交替作為其參數。因此,表達式只是循環遍歷報告中的數字列框並設定格式。我們有一個可以顯示的最大字元數的欄位寬度 - 然後是小數位數。因此,取決於我們選擇哪個紅色三角形選單選項,這將決定執行哪個表達式。因此我將運行這些行,在自訂報告中,您現在會看到我們有紅色三角形選單。線將會改變圖形產生器中的框架的大小。如果我去——我將右鍵單擊“披露”按鈕,然後在“編輯”下選擇“顯示樹結構”——我可以向下滾動。當您查看整個報表時,您會發現其中有許多建構函數,而我們在編寫自己的腳本時並不會使用這些建構函數。但我向下滾動。好的,這是 PictureBox,再向下捲動一些,這是標題,再向下捲動一些。您可以將滑鼠懸停在上面來查看軸框。最後,我看到了 FrameBox,因此我可以看到這就是我想要調整大小的東西。當您熟悉平台時,您可能不需要查看樹結構。因此,我在新視窗下標一行,並發送訊息“框架大小”,以像素為單位,我將繼續運行行,這樣就調整了圖形產生器框架的大小。現在,您可以再次使用腳本索引來查看不同的顯示框可以接收哪些類型的訊息。因此,如果我轉到“幫助”功能表並選擇“腳本索引”,我可以從“所有類別”更改為“顯示框”,然後向下滾動以找到 FrameBox 並查看可以發送到該框的訊息。我要關閉腳本索引。我們想要做的另一件事是,在 AxisBox 上新增一條參考線。再說一次,如果我不熟悉——如果我不熟悉 Graph Builder 的顯示樹結構,我會使用 - 我就會查看該樹結構視窗。在某些平台上是垂直軸。在某些平台上,它是水平的。在這種情況下,它是水平軸。我發送訊息來添加參考行。這裡的參數是您希望參考線處於什麼值?我想要什麼風格的?我想要固體的。顏色?我要變黑。第四個參數是軸上的標籤。所以,只要有一個空字串,就表示我們不要標籤。事實上,只要我有這個逗號來告訴 JMP 這是第五個參數,而不是第四個參數,我就可以刪除它。如果我沒有這個逗號,那麼 JMP 就會用一個標籤來標記軸,但因為我把逗號放在那裡,所以 JMP 明白這是線寬,而不是標籤。所以我要運行線並繪製我的參考線。然後,這個腳本的最後一部分是將「Save Journal」傳送到nw中儲存的顯示框,並將其命名為Custom CV Report.jrn。現在,您的腳本可能到此結束,透過即時圖形產生器視窗和紅色三角形選單產生此報告供用戶互動。事實上,這次我會選擇一位小數。在某些情況下,您可能還想將該報告儲存為日誌。當你這樣做時,你會失去那個紅色三角形選單。並且您的圖表產生器將不再是即時報告。但這裡的最後一個選項顯示如何將自訂報告儲存為日誌,並顯示「儲存日誌」訊息。因此在這個腳本中我們啟動了分析層。我們檢索了報表層對象,然後取得了我們需要的該報表層的元素,無論是作為副本還是作為操作矩陣。我們為想要使用的平台建立了單獨的資料表,然後使用新視窗建立自訂報告,在本例中,除了儲存在層級中的字串列框和各種數字列框之外,還使用選項卡、水平列錶框和大綱框作為顯示框。然後,我們了解如何向該自訂報告的元件發送訊息。