gpt4 book ai didi

r - ggplot2 具有多个参数的绘图函数

转载 作者:行者123 更新时间:2023-12-02 17:21:06 24 4
gpt4 key购买 nike

我得到了这个功能。

change <- function(score, d, k, p) {k*(score - 1/(1+k^(d/p)))}

我想在一个图中绘制此函数针对一系列参数 d 和 p 的所有结果。在 base r 中就是这样。

parameters <- c(100:400)
colorshelf <-rainbow(length(parameters)) #red is low
for(i in seq_along(parameters)) {
print(i)
curve(change(score=1, d=x, k=100, p=parameters[i]), from=0, to=500, add=T, col=colorshelf[i])
}

但我认为这在 ggplot2 中一定是可能的,但我无法解决这个问题。我目前坚持这个。任何帮助表示赞赏。

ggp <- ggplot(data.frame(Ds=c(0:1000), Ps=c(0:1000)), aes(x=Ds, col=Ps)) + 
stat_function(fun=change, args=list(score=1, d=Ds, k=100, p=Ps))
ggp

最佳答案

我会在 ggplot2 之外执行此操作。我认为期望 ggplot 向量化两个不同的参数可能太过分了......

这是通过 tidyverse 实现的,但也可以通过 apply 轻松完成。

 library(dplyr)
change <- function(score, d, k, p) {k*(score - 1/(1+k^(d/p)))}
dd <- expand.grid(d=0:1000,p=0:100)
dd %>% rowwise %>%
mutate(c=change(score=1,d=d,k=100,p=p)) ->
dd2

library(ggplot2)
ggp <- ggplot(dd2,aes(d,c,col=p,group=p))+
geom_path()

我只做了从 0 到 100(而不是 0 到 1000)的 p,因为 100 万个点对于 ggplot 来说是一个相当大的数据集。 (您真的需要查看 1000 个单独的值吗?也许 seq(0,1000,length=100)

关于r - ggplot2 具有多个参数的绘图函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598375/

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