Obtenez le nombre de groupes (panneaux) dans le générateur de graphiques pour vérifier que la visualisation est raisonnableJ'ai donc écrit un peu de JSL qui est capable de prendre un tableau de données et de faire des suggestions de graphiques. Il vérifie le nombre de valeurs uniques, le type de données de la colonne et le nom de la colonne pour déterminer quel graphique serait le plus approprié.
Un problème que je rencontre est lorsqu'il utilise Page, Groupe X, Groupe Y et/ou Wrap et qu'il n'y a pas beaucoup de points de données dans les panneaux résultants. Vous trouverez ci-dessous un exemple idiot utilisant Big Class.Il est clair que le nom est une mauvaise variable de regroupement car chaque panneau du graphique ne contient qu'un seul point.

Une fois que mon code a choisi une visualisation potentielle, quelle serait la meilleure façon de vérifier que la mise en page ne contiendra pas principalement des panneaux contenant des données clairsemées/vides ?
- Puisque je sais comment mes variables sont liées, je peux créer une table à l'aide de tabulation, créer une table de données masquée, créer une matrice, puis vérifier la parcimonie de la matrice. Cela semble long.
- J'ai besoin de compter ce qui, à mon avis, n'est pas possible en utilisant la fonction JSL summarise() (dans JMP 12) qui ne crée pas de table.
- Existe-t-il une manière élégante de construire la matrice de comptage ?
- Généralement, le code suggère trois graphiques pour chaque élément de la liste la plus nombreuse (X, Y ou Légende), donc je veux éviter de créer des tableaux si possible.
Merci,
Étienne
Re : Obtenir le nombre de groupes (panneaux) dans le générateur de graphiques pour vérifier que la visualisation est raisonnableIl s'avère qu'il existe un complément JMP qui peut convertir toutes les colonnes de caractères en numérique . Merci à @M_Anderson pour le pointant .
Cela facilite vraiment l'utilisation de summarise().
Re : Obtenir le nombre de groupes (panneaux) dans le générateur de graphiques pour vérifier que la visualisation est raisonnableSi toutes vos variables de regroupement étaient numériques, ce serait plus rapide, car le récapitulatif serait en mesure d'accélérer le comptage. Mais cela est très restrictif pour les données et/ou l'utilisateur. Vous pouvez convertir les appels de fonction de synthèse en plates-formes "Résumé" et créer des tables pouvant gérer à la fois des colonnes numériques et des colonnes de caractères. Vous pouvez faire des tests de synchronisation pour voir si cela fonctionnera.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\car physical data.jmp" );
dtsumm=dt << Summary(private,
Group( :type),
N( :type ),
Freq( "None" ),
Weight( "None" )
);
show(dtsumm:type<<GET values=""></GET>
Re : Obtenir le nombre de groupes (panneaux) dans le générateur de graphiques pour vérifier que la visualisation est raisonnableMerci pour cet exemple. Si j'ai un groupe Y et un groupe X (potentiellement X également) tous en tant que personnage, j'ai besoin d'imbriquer trois boucles for? Cela devient rapidement un moyen de lier JMP en boucles car les tables de données sont d'une taille inconnue (potentiellement, un utilisateur pourrait demander 30 graphiques qui nécessitent tous le calcul de la matrice du panneau - j'ai limité le programme pour afficher uniquement les 30 premières suggestions) .
C'est peut-être un meilleur exemple utilisant des données physiques de voitures, ce que j'espérais était une matrice 3x5 ou une liste de 15 éléments.

Est-il préférable de recoder les colonnes de caractères en tant que numériques afin de tirer le meilleur parti de summarise() ? Est-il susceptible d'être plus rapide/plus ordonné que pour les boucles ?
Re : Obtenir le nombre de groupes (panneaux) dans le générateur de graphiques pour vérifier que la visualisation est raisonnableRésumer est la voie à suivre. Il ne peut pas compter les colonnes de caractères, mais il peut obtenir les valeurs de regroupement à partir desquelles vous pouvez obtenir les comptes. Voir le script ci-dessous
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
// Numeric Column
dt = Open( "$SAMPLE_DATA\big class.jmp" );
Summarize( dt, bygroup = by( :age ), counts = Count( :age ) );
Show( "Numeric Column", bygroup, counts );
// Character Column
Summarize( dt, bygroup = by( :sex ) );
counts = {};
For( i = 1, i <= N Items( bygroup ), i++,
Insert Into( counts, N Rows( dt << get rows where( :sex == bygroup[i] ) ) )
);
Show( "Character Column", bygroup, counts );