Qu'est-ce qui a inspiré cette demande de liste de souhaits ?
En fonction de ce que vous faites dans JMP, vous devez parfois passer inutilement de données larges à des données hautes en raison du fonctionnement du sélecteur de colonnes/filtre de données local - nous ne pouvons pas "filtrer" les colonnes actuellement. C'est l'une des raisons pour lesquelles j'ai créé le complément Enhanced Sankey Plot (ESP) , car il est assez difficile d'ajouter/supprimer rapidement des colonnes spécifiques du générateur de graphiques.
Quelle est l’amélioration que vous souhaiteriez voir ?
J'aimerais avoir un nouvel outil ? "Filtre de colonne" qui me permettrait de déterminer quelles colonnes je souhaite afficher. Cela fonctionnerait essentiellement comme un filtre de données mais pour les colonnes.
Si j'ai une situation comme celle-ci où j'ai plusieurs colonnes sur mon axe Y par exemple

Je n'ai pas d'options simples pour masquer ou ajouter des colonnes supplémentaires. Si je souhaite ajouter certaines de ces colonnes ou en ajouter de nouvelles, je dois d'abord empiler les données et créer un graphique avec un filtre de données local.

Cela fonctionne très bien, mais cela semble parfois une étape très inutile.
Pourquoi cette idée est-elle importante ?
Cela réduirait l’écart entre les données hautes/empilées et larges/divisées.
Script pour démontrer comment cela pourrait fonctionner (c'est très loin d'être un produit utilisable, mais devrait fonctionner comme une démonstration, je le transformerai également en complément/barre d'outils lorsque j'aurai suffisamment de temps pour concevoir correctement l'interface utilisateur)
Une colonne en Y

Ajouter plus et actualiser

Supprimer le rôle X

Ajouter deux au rôle X

Voir plus...
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;