從互動式圖表建立子集?你好。 我正在嘗試製作一個互動式圖表來顯示匯總表中的資料。 目標是建立一個包含點的折線圖,可以點擊這些點來從該特定點提取資料子集。 例如,在下面的腳本中,我有一個按大類別範例表的年齡劃分的總計表的圖表。 使用者應該能夠單擊圖表上的一個點,並讓它自動提取包含該點所有資料的子集表。
我遇到的問題是單擊將不起作用,因為尚未選擇任何數據。 使用者必須雙擊一個點來選擇數據,然後再次單擊以運行子集表達式。 有沒有一種方法可以做到這一點而無需三次點擊? 謝謝。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dtSummary = dt << Summary(
Group( :age ),
Freq( "None" ),
Weight( "None" ),
output table name( "dtSummary" )
);
gbExpr = Expr(
gb = Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :N Rows ) ),
Elements( Points( X, Y, Legend( 3 ) ), Line( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, [-1], 4, [-1]} ), Position( {-1, -1} )}
)
)
);
);
ExprA = Expr(
dtSubset = dt << Subset( Output Table( "Subset" ), Selected Rows( 1 ), Selected Columns( 0 ));
dtSummary << Clear Selected Rows;
);
GraphWindow = New Window( "Graph" );
GraphWindow << Append(
MouseBox(
gbExpr,
<<SETCLICKENABLE></SETCLICKENABLE>回覆:從互動式圖表建立子集?在 JMP 15.0 中,子集人民幣選單選項已新增至懸停標籤中,其功能與您所描述的完全一致。
現在所有圖表都內建了此功能。
我剛剛嘗試了一下,結果與運行腳本時的結果完全相同。
請注意,無需建立單獨的總表 - 新功能「理解」由折線圖、長條圖等圖形完成的聚合。
換句話說,該子集基於從指標下的可視元素的定義導出的本地資料過濾器。
該技術還支援創建 graphlet 並在新視窗中啟動它們(也稱為向下鑽取)。
欲了解更多詳情,請查看https://www.jmp.com/content/dam/jmp/documents/en/support/jmp15/using-jmp.pdf ,第 512 頁。

回覆:從互動式圖表建立子集?滑鼠盒的替代方法是將行狀態處理程序套用至資料表。 只需單擊即可建立子集(如果嘗試透過拖曳來選擇多個點,這可能會很煩人,因為可能會建立大量意外的子集)。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dtSummary = dt << Summary(Group(:age));
gbExpr = Expr(
gb = Graph Builder(
Show Control Panel(0),
Variables(X(:age), Y(:N Rows)),
Elements(Points(X, Y, Legend(3)), Line(X, Y, Legend(4)))
)
);
ExprA = Expr(
dtSubset = dt << Subset(Selected Rows(1));
dtSummary << Clear Select;
);
f = Function({a}, ExprA);
rs = dt << make row state handler(f);
GraphWindow = New Window("Graph", gbExpr);
回覆:從互動式圖表建立子集?完美的。 很有幫助。非常感謝。
回覆:從互動式圖表建立子集?在完成創建使用滑鼠陷阱的腳本的所有工作時,我認為如果您願意使用預設的滑鼠操作來選擇資料點,然後只需單擊,您就可以使用一個非常簡單的腳本來完成您想要的任務在新增的按鈕上進行選擇

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
gb = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);
subsetButton = Button Box( "Click to Create a Subset of Selected Points",
If( N Rows( dt << get selected rows ) > 0,
dt << subset( selected rows( 1 ), selected columns( 0 ) )
)
);
Report( gb )["Graph Builder"] << append( subsetButton );