我想知道 ggplot2 包或另一個包中是否有一個函式或 R 中的 for 回圈方式可以從資料幀的各種變數/列創建不同的圖,而無需對每個變數/每個變數進行編碼。例如,如果我有一個名為 df 的資料框,其中包含幾列:id(資料鍵)、v1、v2、... v10。我想在 Y 軸上繪制各種變數(v2 到 v8),在 X 軸上繪制 v1,但不為每個變數重復相同的代碼。
# For 1 plot, how could I code for various plots?
plot_v2 <- df%>% # (plot_name as column name, i.e plot_v2)
ggplot( aes(x=v1, y=v2, group=id,
color=id))
geom_line()
# This code creates a figure with a plot, I want to know a way to do this for all
# variables v2 to v8 in axis Y, with a new figure for each one.
這只是一個理論問題,任何有關要查看的函式或撰寫 for 回圈的方法的建議或提示都將非常有用。我無法提供任何示例資料。我曾嘗試使用 for 回圈,但是當我必須在 aes() 中指定軸的變數名稱以及繪圖物件的名稱時,會出現一些問題。真的很感激任何幫助!
因為我第一次提出這個疑問的帖子碰巧被關閉了,我會說清楚,我不想在同一個圖/圖中繪制所有變數,我想知道如何為每個變數創建一個新圖。就像在 Matlab 中一樣,它每次都會使用 figure() 函式并遍歷表的列。
PS:無論版主是誰洗掉了我的第一篇帖子,如果您在洗掉帖子之前先聯系我或詢問我是否建議問題已經發布,我將不勝感激。以前提出的問題對我沒有幫助。謝謝!
uj5u.com熱心網友回復:
讓我們定義一個示例資料框
df <- data.frame(
v1 = runif(40, min = 0, max = 20),
v2 = runif(40, min = -10, max = 10),
v3 = runif(40, min = -30, max = 40),
v4 = runif(40, min = -30, max = 40),
v5 = runif(40, min = -30, max = 40),
v6 = runif(40, min = -30, max = 40),
v7 = runif(40, min = -30, max = 40),
v8 = runif(40, min = -30, max = 40),
id = rep(c("a", "b", "c", "d"), each = 10)
)
我們可以定義一個函式,該函式將索引和資料框作為輸入,并根據傳遞的索引生成圖
# to change the selected columns, edit `[[i 1]]`
make_plot <- function(i, df) {
df %>%
ggplot(aes(x = v1, y = .[[i 1]], color = id))
geom_line()
}
最后,我們通過呼叫 lapply 函式來表示圖
lapply(1:7, make_plot, df)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338784.html
上一篇:如何計算“stepfun”類的兩個步驟函式(R-stepfun)的總和?
下一篇:在R中構建一個包含兩列的陣列
