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

标签 r plot ggplot2

我得到了这个功能。

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/

相关文章:

r - 用ggplot绘制表格对象?

r - 2 列数据的 2 种颜色的简单点图

r - 没有 "sum of others"的顶级预测变量的形状值蜂群图

r - 如何使密度图正确显示极限附近的面积?

r - 使用 R 文本分析进行词干提取

r - iGraph 中的度函数

r - 使用频率计数减少数据后将其制成表格

r - 如何创建具有概率 y 轴而不是密度 y 轴的直方图?

r - 获取R中一组点的上凸包

r - ggplot2 代码运行并更新绘图,但实际上没有显示数据