Bonjour,
J'ai une question concernant une fonction permettant de créer plusieurs graphiques. Je crée donc une fonction qui appelle le générateur de graphiques avec certains paramètres pour créer plusieurs graphiques. Les graphiques sont similaires, mais leur nombre de colonnes et leur formatage sont différents. La seule entrée de la fonction est la table de données contenant les données.
La fonction crée les graphiques. J'enregistre chaque variable comme variable, puis j'ajoute toutes les variables à une liste. Plus tard, je souhaite appeler chaque variable (graphique) de la liste et les placer dans des fenêtres différentes. Cependant, cela ne fonctionne pas et j'obtiens un espace vide lors de l'appel de la liste avec un index.
J'ai essayé de transformer les graphiques en rapports, mais cela les rend non interactifs.
Si j'appelle la fonction à l'endroit où je veux placer le graphique, elle placera les 3 graphiques à la fois au lieu d'un à la fois.
Toute aide sur la façon de naviguer dans ce domaine serait appréciée.
Vous devriez pouvoir appeler la fonction à l'endroit où vous souhaitez placer les graphiques.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
create_plot = function({dt, colname}, {Default Local},
gb = dt << Graph Builder(
Variables(X(:age), Y(Eval(colname)), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
return(gb);
);
plots = {};
nw = new window("",
V List Box(
Insert Into(plots, create_plot(dt, "height")),
Insert Into(plots, create_plot(dt, "weight"))
)
);
Si vous n'avez pas besoin de la liste pour la collecte de référence, vous pouvez simplement la supprimer
nw = new window("",
V List Box(
gb_height = create_plot(dt, "height"),
gb_weight = create_plot(dt, "weight")
)
);
ou juste
nw = new window("",
V List Box(
create_plot(dt, "height"),
create_plot(dt, "weight")
)
);
et l'idée serait similaire pour plusieurs fenêtres
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
create_plot = function({dt, colname}, {Default Local},
gb = dt << Graph Builder(
Variables(X(:age), Y(Eval(colname)), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
return(gb);
);
nw = new window("",
create_plot(dt, "height")
);
nw = new window("",
create_plot(dt, "weight")
);
Ou parfois, vous n'aurez peut-être pas besoin de la nouvelle fenêtre
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
create_plot = function({dt, colname}, {Default Local},
gb = dt << Graph Builder(
Variables(X(:age), Y(Eval(colname)), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
return(gb);
);
gb1 = create_plot(dt, "height");
gb2 = create_plot(dt, "weight");
Merci Jarmo.
Finalement, j'ai fait quelque chose de similaire. J'ai créé une clause Match et j'avais simplement le choix entre les trois types de graphiques à créer, puis j'ai appelé la fonction autant de fois que nécessaire, avec la possibilité de générer les graphiques individuels. Je pense que c'est équivalent à ce que vous avez fait. Je souhaitais que les trois tracés soient créés dans la même fonction, car ils présentent tous quelques légères différences de formatage, au-delà du simple remplacement du nom de colonne comme dans votre exemple, et je ne voulais pas créer trois fonctions différentes pour chaque type, ce qui aurait également fonctionné.
Outre « comment créer les graphiques ? », on peut également se demander « comment organiser les graphiques ? ».
Peut-être utiliser une seule fenêtre et stocker les graphiques sous forme d'onglets ?