gpt4 book ai didi

r - 使用 ggplot 在循环中按名称访问字段

转载 作者:行者123 更新时间:2023-12-04 08:39:15 24 4
gpt4 key购买 nike

让我们组成一些数据,这是一个嘈杂的正弦:

xx <- sort(runif(125, 0, 2 * pi))
yy <- sin(xx) + rnorm(length(xx), sd = 0.3)
data <- data.frame(x = xx, y = yy)
为不同的参数添加 lowess 的拟合:
ff <- c(2/3, 1/3, 1/10)
for (n in 1:length(ff)) {
data[[paste("f", n, sep="")]] <- lowess(data$y ~ data$x, f = ff[n])$y
}
现在绘制在一张图表中:
ggplot(data) + 
geom_point(aes(x = x, y = y, color = "samples")) +
geom_function(fun = sin, aes(x = x, color = "original sine")) +
geom_line(aes(x = x, y = f1, color = "f1")) +
geom_line(aes(x = x, y = f2, color = "f2")) +
geom_line(aes(x = x, y = f3, color = "f3"))
这有多个问题。
但最重要的是,如何用 for 循环替换最后一部分? IE。就像是:
p <- ggplot(data) + 
geom_point(aes(x = x, y = y, color = "samples")) +
geom_function(fun = sin, aes(x = x, color = "original sine"))

for (f in ff) {
p <- p + geom_line(aes(x = x, y = f))
}

p
二、本 color =感觉不是附加图例标签的正确方法。
如何获得不同的颜色并贴上标签?
最后,我想将循环中的线条的线条类型更改为虚线。
谢谢你。

最佳答案

获取以 "f" 开头的列长格式,然后绘图:

library(tidyr)
library(ggplot2)

data %>%
pivot_longer(cols = starts_with('f')) %>%
ggplot() + geom_point(aes(x = x, y = y, color = "samples")) +
geom_function(fun = sin, aes(x = x, color = "original sine")) +
geom_line(aes(x = x, y = value, color = name), linetype = 'dashed')
enter image description here

关于r - 使用 ggplot 在循环中按名称访问字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64646441/

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