【发布时间】:2017-11-03 04:34:28
【问题描述】:
我在更新 ggplot 对象时遇到了一些问题。我想要做的是在每个循环中更改的特定位置放置一条垂直线,因此:多条线将显示在不同的位置。但是,当我使用 for 循环时,它只向我显示它创建的最后一行,但是当我手动执行它时,它可以工作。我创建了一个可复制的示例,你们可以检查:
library(ggplot2)
x <- ggplot(mapping = aes(x = 1:100, y = 1:100)) +
geom_line()
for(i in 1:6){
x <- x + geom_vline(aes(xintercept = i*5))
}
y <- ggplot(mapping = aes(x = 1:100, y = 1:100)) +
geom_line()
y <- y + geom_vline(aes(xintercept = 5))
y <- y + geom_vline(aes(xintercept = 10))
y <- y + geom_vline(aes(xintercept = 15))
y <- y + geom_vline(aes(xintercept = 20))
y <- y + geom_vline(aes(xintercept = 25))
y <- y + geom_vline(aes(xintercept = 30))
检查两个图。为什么第一个情节看起来与第二个情节不一样,尽管对我来说两个过程都做“相同”的事情?
【问题讨论】:
-
查看this answer 了解正在发生的事情。
-
在
geom_vlinefor 循环中使用aes_而不是aes将得到与 y 相同的情节。