你好,
我有一個關於創建多圖函數的問題。我正在編寫一個函數,它使用特定的設定來呼叫圖形生成器來創建多個圖。這些圖形類似,但使用的列數不同,格式也略有不同。此函數的唯一輸入是包含資料的資料表。
該函數用於創建圖表,我將每個圖表保存為一個變量,最後將所有變量添加到一個列表中。之後,我想從列表中調用每個變數(圖表),並將它們放在不同的視窗中。但是,這行不通,當我使用索引呼叫清單時,會出現一個空白。
我嘗試將圖表製作成報告,但這會使它們不具有互動性。
如果我在想要放置圖形的位置呼叫該函數,它將一次放置所有 3 個圖形,而不是一次放置一個。
如能提供任何有關如何解決此問題的協助,我們將不勝感激。
您應該能夠呼叫您希望獲得圖表的函數
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"))
)
);
如果你不需要清單來收集參考,你可以直接刪除它
nw = new window("",
V List Box(
gb_height = create_plot(dt, "height"),
gb_weight = create_plot(dt, "weight")
)
);
或者只是
nw = new window("",
V List Box(
create_plot(dt, "height"),
create_plot(dt, "weight")
)
);
對於多個視窗來說,想法是類似的
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")
);
或者有時你可能不需要新視窗
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");
謝謝 Jarmo。
最後我做了類似的事情。我建立了一個 Match 子句,只需要選擇要繪製三種圖表中的哪一種,然後根據需要多次呼叫函數,並選擇產生單獨的圖表。我認為這和你最後做的差不多。我希望用同一個函數來繪製所有三種圖表,因為它們在格式上都有些細微的差別,而不僅僅是像你的例子那樣替換列名,而且我不想為每種類型創建三個不同的函數,那樣也能正常工作。
除了「如何建立圖表?」之外,還要考慮「如何組織圖表?」。
也許使用單一視窗並將圖形儲存為選項卡?