Я пытаюсь построить несколько функций с пакетом ggplot2
с использованием stat_function
. Поскольку у меня есть несколько параметров параметров, которые я использую для цикла. Я сохраняю свои графики в переменной списка myplot
. Проблема возникает, когда я пытаюсь их распечатать. Использование print
все кажется ОК, но когда я использую только параметр, например. myplot[[1]]
линии те же, что и для myplot[[2]]
и т. Д., Однако точки построены правильно. Такую же проблему можно наблюдать, когда я пытаюсь построить все мои графики с помощью одной цифры, используя функцию grid.arrange
.stat_function и grid.arrange in for loop
Смотрите мой пример:
library("ggplot2")
myfun <- function(x, group, a, b, e){
a * x + b + group * e
}
abe <- rbind(c(1, 2, 3), c(7, 0, -4), c(-1, -5, 8))
myplot <- list()
for (i in 1:3){
x1 <- rnorm(10, 0, 1)
x2 <- rnorm(10, 1, 1)
num <- runif(20, -10, 10)
df <- cbind(rbind(data.frame(x = x1, group = "group 1"),
data.frame(x = x1, group = "group 2")),
num)
myplot[[i]] <- ggplot(df, aes_string("x", "num")) +
geom_point(aes_string(colour = "group")) +
stat_function(aes(colour = "group 1"),
fun = function(x)
myfun(x, 0, abe[i, 1], abe[i, 2], abe[i, 3]),
geom = "line") +
stat_function(aes(colour = "group 2"),
fun = function(x)
myfun(x, 1, abe[i, 1], abe[i, 2], abe[i, 3]),
geom = "line") +
ylim(c(-10, 10)) + xlim(c(-2, 2))
}
### everything OK
for (i in 1:3){
print(myplot[[i]])
}
### points are changing but lines remain the same
myplot[[1]]; myplot[[2]]; myplot[[3]]
### again points are changing but lines remain the same
grid.arrange(myplot[[1]], myplot[[2]], myplot[[3]], ncol = 3)
Как я хочу, чтобы сохранить все цифры в один файл, я хотел бы, чтобы правильно сделать grid.arrange
сюжетные линии.
Спасибо, это решило мою проблему! – Adela