有條件地抑製圖表中的文本框<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
一般來說,我對 jsl 和腳本編寫很陌生,但我正在嘗試根據一列的條件創建變異性圖表。
當我在設置下使用 where 時,它會在繪圖上方生成一個文本框,該文本框與 where 中的整個字符串匹配(並對製作的每個圖表重複)。 有什麼辦法可以抑制這種情況嗎? 當條件很長並且附加多個圖時,它會導致顯示問題。
例如:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt<<變異圖(Y(:體重),X(:年齡),Where(:性別=="M"));

通過界面並沒有顯示這個問題,但腳本看起來很相似:

回复:用條件抑製圖表中的文本框令人沮喪的是,這仍然是一個問題。
同樣令人沮喪的是,這個問題的大多數文檔/解決方案都沒有涵蓋廣泛的情況,或者他們通過迭代樹結構來暴力破解它。
JMP 具有 xpath 功能,但該功能也沒有詳細記錄。 我想這是因為 xpath 是 JMP 不擁有所有權的標準語法,因此他們認為沒有必要向可能不熟悉的用戶提供任何文檔。
這是我用來擺脫這些討厭的文本框的一行代碼,基本上在它們出現的任何情況下都是如此。 您確實需要對包含違規文本框的任何報告進行包裝(如果還沒有)。
借用 txnelson 對所述輪廓盒包裝器的命名:
(ob << xpath("//TextBox[contains(text(),'Where(')]")) << delete;<BR />如果需要,可以使用類似的 xpath 腳本來獲取框的實際文本,也許執行一些處理以使信息更清晰,然後將其插入到另一個大綱框或適合組的標題中 -這將是首先將報告保存到腳本的所需功能!
有關 JMP 中 xpath 的更多閱讀,我強烈建議閱讀本報告 [PDF]不久前由另一位 JMP 用戶發布。 該 PDF 概述了與 jmp 相關的 xpath 語法,並提供了有用的示例。
回复:用條件抑製圖表中的文本框刪除文本框的另一種方法是簡單地隱藏它。對於吉姆提到的情況,隱藏效果很好,但它可能並不適合所有情況。
觀察[文本框( 1 )] <<隱藏( 1 ) ;
溫迪
回复:用條件抑製圖表中的文本框只是想說,我也發現自己經常剝離這個“Where”文本框 - 出於您顯示的原因,而且我認為這個小打印條款作為標籤不太好,它很容易在視覺上丟失。
同意Ian 的觀點,即信息可能有用甚至必不可少,但當我使用JSL 構建自定義報告時,無論如何,我通常會討論冗餘的大綱框標題並修改它們以更加突出地提供此信息,並且不會出現煩人的佈局問題文本框。因此,如果您有那些大的粗體標籤,上面寫著“變異性測量儀”和“體重變異性圖表”,我會修改它們以添加 SEX=M 或其他更明顯的地方。
另外,我經常有很多圖,根據數據的不同,數量也不同,等等,所以我有時使用這種粗略的方法來刪除所有的Where文本框......
對於(i=1000,i>0,i--,
嘗試(如果(包含(nw [文本框(i)] << gettext,“Where(:”),nw [文本框(i)] <<刪除));
);
回复:用條件抑製圖表中的文本框非常感謝馬克 - 現在我明白了。
回复:用條件抑製圖表中的文本框我想知道同樣的事情。 謝謝
回复:用條件抑製圖表中的文本框謝謝回复。 在 H 列錶框中,額外的文本會導致問題。 文本會顯示在側面,導致大量額外的死角。 另外是通用文本,未評估。

回复:用條件抑製圖表中的文本框謝謝! 這對我有用。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
總結(lev = by(:性別,:年齡));
k=關聯數組(lev[1])<<獲取鍵;
nk = 尼特姆斯(k);
New Window("Var by Sex and Age", main = V List Box());
對於(i=1,i<=nk,i++,
loc1 = loc(lev[1],k );
vcwin = H 列錶框();
對於(j=1,j<=nrows(loc1),j++,
ob=OutlineBox("",dt<<變異圖(Y(:體重),:X(:身高),Where(:性別==lev[1][loc1] & :年齡 == num(lev[2][loc1])),標準差圖表(0)));
ob[文本框(1)]<<刪除;
vcwin<<追加(ob);
);
主要<<追加(vcwin);
);
回复:用條件抑製圖表中的文本框我會警告不要刪除“按”組變量的級別,因為顯而易見,如果沒有它們,就不清楚每個圖表與哪個“子集”相關。
但是,如果我理解正確的話,您希望使大綱節點中的標籤更短。 如果您覺得必須這樣做,您可以嘗試以下方法:
名稱默認到這裡( 1 ) ;
dt =打開( “$SAMPLE_DATA/大類.jmp” ) ;
// 帶有“By”組的變異圖
VC = dt <<變異圖(是( :重量) , X ( :年齡) ,經過( :性別)) ;
// 報表層
VCRep = VC <<報告;
// 獲取“By”組的級別
級別=關聯數組(柱子( dt , “性別” ) <<獲取值) <<獲取密鑰;
// 更新(縮短)報告上的大綱節點標題
為了( G = 1 , G <= N項( VCRep ) , G ++,
VCRep [ G ][大綱框( 1 )] <<設置標題(查爾(級別[ G ])) ;
) ;
要了解其工作原理,請查看“幫助 > 腳本指南”或“幫助 > 腳本索引”。
我只是好奇不去理會會導致什麼“顯示問題”
回复:用條件抑製圖表中的文本框這是我用來擺脫Where子句的方法。
我懷疑可能有一種方法可以從可變性平台的報告輸出中引用它,但由於它實際上是在平台輸出之前顯示的,所以我已經成功地在輸出周圍包裹了一個新窗口,並嵌入了“空”輪廓框,然後從那裡引用它。
名稱默認為此處( 1 ) ;
dt =打開( “$SAMPLE_DATA/大類.jmp” ) ;
// 將顯示形式化為一個空的新窗口
// 允許引用Where 文本框的輪廓框
// 在顯示變異性圖表之前
新窗戶( “展示” ,
觀察=輪廓盒( ”” , dt <<變異圖(是( :重量) , X ( :年齡) ,在哪裡( :性別== “M” ) ) )
) ;
// 刪除其中包含Where 子句的文本框
觀察[文本框( 1 )] <<刪除;