作者註: 今天的示例適用於在Graph Builder中創建的地圖,但您可以在JMP的大多數平台中使用此方法。
在這個由兩部分組成的系列文章的第一部分中,我展示了JMP 12中數據表中支持圖像的示例。今天,我將向您展示如何使用此功能在Graph Builder中創建多層報表和圖形,只需編寫一些腳本。

在上面的地圖中,每個州都按其平均溫度著色 - 藍色較冷,紅色較暖。懸停在任何狀態上都會顯示狀態隨時間變化的溫度趨勢圖。在這裡,我們擁有兩全其美的優勢:易於理解的數據概覽,隱藏了其他詳細信息但可立即使用。
JMP中的Graph Builder允許我們將它創建的圖形的圖像保存到數據表中,但上面的趨勢圖不是在Graph Builder中創建的 - 它是使用Overlay Plot創建的。當我們想要保存我們在Graph Builder之外創建的圖像時會發生什麼?
幸運的是,我們需要的是一些JSL。在今天的示例中,我們將介紹創建上述地圖所需的代碼。
首先,讓我們看一下原始數據:美國50個州的平均年度氣溫。這是我們的源表,將用於創建趨勢圖。

地圖本身依賴於下表。要創建它,我們將:
總結原始表,按州平均溫度。創建一個新列表達數據類型,用於存放從原始表創建的趨勢圖的圖像。將每個趨勢圖中的圖像複製到摘要表中。打開標籤州和平均值(溫度F) 列,當我們懸停在地圖上時顯示這些。
一步一步,這是JSL中的樣子。

第1行為源表分配句柄。第3 - 11行創建疊加圖報告。第13行為疊加圖指定了一個句柄,因此我們可以引用其中的各個大綱框。運行上面的代碼後,報告看起來像這樣。(如果您的報告不同,可能是由於我們的偏好設置不同。)

接下來的四行JSL創建了匯總表並準備好與圖像一起使用。

第15行創建匯總表。第17行刪除了 N行摘要表中的列。第19行創建了一個新列,圖形 ,表達式數據類型。第21行打開了列的標籤屬性州和圖形列。剩下的就是遍歷報表,將圖片保存到匯總表中。

在第23行初始化我們的計數器後,我們循環一個循環。由於第25行中的1總是計算為“True”,因此我們需要有一種方法可以在需要時突破循環。Try(...,...)語句允許我們這樣做。嘗試(...,...)將嘗試處理逗號之前出現的任何代碼。如果遇到錯誤,它會在逗號後處理代碼(或者只是忽略錯誤,如果逗號後面沒有代碼 - 第二個參數實際上是可選的。)這裡,第27行嘗試獲取報表中當前大綱框的句柄,而第28行則拍攝該大綱框的圖片,並將圖片存儲在摘要表的當前行中。由於摘要表和報表都按字母順序對狀態進行排序,因此這種簡單的方法很有效。第32行遞增索引,以便下次循環時,我們嘗試獲取下一個大綱框。最終索引命中51,並且由於Rep [Outlinebox(51)]不存在,我們得到一個錯誤並進入Try(...,...)語句的下半部分,通過Break()退出循環。摘要表現在應如下所示:

要創建地圖,請分別調用Graph Builder並將State和Temperature列拖到Shape和Color區域。這裡的所有都是它的!

我希望你喜歡今天的帖子;我很高興看到和聽到您將提出的有趣的應用程序!
PS我放了源表和腳本文件在裡面 JMP用戶社區的文件交換 。(訪問文件需要免費的SAS配置文件。)