Cosa ha ispirato questa richiesta di lista dei desideri?
A seconda di ciò che si sta facendo in JMP, a volte è necessario passare inutilmente da Wide Data a Tall Data a causa del funzionamento del commutatore di colonne/filtro dei dati locali: al momento non possiamo "filtrare" le colonne. Questo è uno dei motivi per cui ho creato il componente aggiuntivo Enhanced Sankey Plot (ESP) poiché è abbastanza difficile aggiungere/rimuovere rapidamente colonne specifiche dal generatore di grafici.
Qual è il miglioramento che vorresti vedere?
Vorrei avere un nuovo strumento? "Filtro colonne" che mi consentirebbe di determinare quali colonne voglio mostrare. Funzionerebbe sostanzialmente come il filtro dati ma per le colonne.
Se ho una situazione come questa in cui ho più colonne nel mio asse Y, ad esempio

Non ho opzioni semplici per nascondere o aggiungere colonne extra. Se desidero alcune di queste colonne o aggiungerne di nuove, devo prima impilare i dati e creare un grafico con il filtro dati locale

Funziona alla grande, ma a volte sembra un passaggio davvero inutile.
Perché questa idea è importante?
Ciò ridurrebbe il divario tra i dati alti/impilati e quelli estesi/divisi.
Script per dimostrare come potrebbe funzionare (questo è molto lontano dall'essere un prodotto utilizzabile, ma dovrebbe funzionare come dimostrazione, lo trasformerò anche in un componente aggiuntivo/barra degli strumenti quando avrò abbastanza tempo per progettare correttamente l'interfaccia utente)
Una colonna in Y

Aggiungi altro e aggiorna

Rimuovi il ruolo X

Aggiungi due al ruolo X

Visualizza altro...
Names Default To Here(1);
delete_variable_for_role = function({report, role}, {Default Local},
all_variables = report << get variables;
For Each({variable}, all_variables,
colname = Arg(variable, 1) << get name;
Try(
Eval(EvalExpr(
report << Remove Variable({Expr(NameExpr(AsColumn(colname))), Role(Expr(role)), Position(1)})
));
);
);
);
add_variables_for_role = function({report, columns, role}, {Default Local},
For Each({colname}, columns,
Eval(EvalExpr(
report << Add Variable({Expr(NameExpr(AsColumn(colname))), Role(Expr(role)), Position(1)});
));
);
);
update_cols = Expr(
cur_cols = fcs << get selected;
cur_role = cb << get selected;
report << inval;
delete_variable_for_role(report, cur_role);
add_variables_for_role(report, cur_cols, cur_role);
report << update window;
wait(0);
);
prepend_column_filter = Expr(
lb = (Report(report) << top parent) << child;
lb << Set Horizontal(1);
ob_colfilter = Outline Box("Column Filter",
V List Box(
H List Box(
Panel Box("Role to Filter",
Lineup Box(N Col(1),
Text Box("Select Role to filter"),
cb = Combo Box({"Y", "X"})
)
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("Refresh",
update_cols
),
)
)
),
Panel Box("Columns",
fcs = Filter Col Selector(Datatable(dt))
)
)
);
cur_height = report << get height;
fcs << set height(cur_height - 200);
fcs << set width(200);
Eval(EvalExpr(
ob_colfilter << Set Menu Script(
{"Remove Column Filter", Expr(ob_colfilter) << Delete Box; Expr(lb) << Set Horizontal(0)}
);
));
lb << Prepend(ob_colfilter);
);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
dt << Ungroup Columns;
report = dt << Graph Builder(
Size(528, 653),
Show Control Panel(0),
Fit to Window("On"),
Variables(X(:SITE), Y(:NPN1), Y(:PNP1, Position(1))),
Elements(Boxplot(X, Y(1), Y(2), Legend(4)))
);
wait(2);
prepend_column_filter;
un'idea meravigliosa!
davvero utile, grazie @jthi