gpt4 book ai didi

r - 使用 for 循环 (R) 更新 ggplot

转载 作者:行者123 更新时间:2023-12-04 02:43:26 26 4
gpt4 key购买 nike

我在更新 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))

检查两个图。为什么第一个情节看起来与第二个情节不一样,尽管对我来说两个过程都做“相同”的事情?

最佳答案

我正在查看一些人留下的一些贡献,并且有一个非常有效地解决了它,它是使用 aes_() 而不是 aes()。不同之处在于 aes_() 强制评估和更新绘图,而 aes() 仅在绘制绘图时评估索引。因此:它在 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))
}

关于r - 使用 for 循环 (R) 更新 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com