Hallo,
Ich habe eine Frage zu einer Funktion zum Erstellen mehrerer Diagramme. Ich erstelle eine Funktion, die den Diagrammgenerator mit bestimmten Einstellungen aufruft, um mehrere Diagramme zu erstellen. Die Diagramme sind ähnlich, unterscheiden sich aber in der Anzahl der verwendeten Spalten und der Formatierung. Die einzige Eingabe für die Funktion ist die Datentabelle mit den Daten.
Die Funktion erstellt die Graphen. Ich speichere jeden Graphen als Variable und füge sie anschließend zu einer Liste hinzu. Später möchte ich die einzelnen Variablen (Graphen) aus der Liste aufrufen und in verschiedenen Fenstern platzieren. Das funktioniert jedoch nicht, und beim Aufruf der Liste mit einem Index erhalte ich ein Leerzeichen.
Ich habe versucht, aus den Diagrammen Berichte zu erstellen, aber dadurch sind sie nicht mehr interaktiv.
Wenn ich die Funktion an der Stelle aufrufe, an der ich das Diagramm platzieren möchte, werden alle drei Diagramme gleichzeitig und nicht einzeln platziert.
Für jede Hilfe zur Navigation wäre ich dankbar.
Sie sollten in der Lage sein, die Funktion dort aufzurufen, wo Sie die Graphen haben möchten.
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"))
)
);
Wenn Sie die Liste nicht für die Referenzsammlung benötigen, können Sie sie einfach löschen
nw = new window("",
V List Box(
gb_height = create_plot(dt, "height"),
gb_weight = create_plot(dt, "weight")
)
);
oder einfach
nw = new window("",
V List Box(
create_plot(dt, "height"),
create_plot(dt, "weight")
)
);
und die Idee wäre für mehrere Fenster ähnlich
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")
);
Oder manchmal brauchen Sie das neue Fenster vielleicht nicht
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");
Danke, Jarmo.
Am Ende habe ich etwas Ähnliches gemacht. Ich habe eine Match-Klausel erstellt und konnte dann einfach auswählen, welche der drei Diagrammtypen erstellt werden sollten. Anschließend habe ich die Funktion so oft aufgerufen, wie ich wollte, und konnte die einzelnen Diagramme erstellen. Ich denke, das entspricht dem, was Sie letztendlich gemacht haben. Ich wollte alle drei Diagramme mit derselben Funktion erstellen, da sie alle kleine Unterschiede in der Formatierung aufweisen – mehr als nur das Ersetzen der Spaltennamen wie in Ihrem Beispiel. Außerdem wollte ich nicht drei verschiedene Funktionen für jeden Typ erstellen, was genauso gut funktionieren würde.
Neben der Frage „Wie erstelle ich die Diagramme?“ könnte man sich auch die Frage „Wie organisiere ich die Diagramme?“ stellen.
Vielleicht ein einzelnes Fenster verwenden und die Diagramme als Registerkarten speichern ?