在ggplot2中绘制同一图表中的两行

时间:2013-11-30 23:08:41

标签: r plot ggplot2

我知道如何使用R的默认绘图功能进行绘图。我如何在ggplot2中执行与以下R代码相同的操作?

double <- function(x){
  return(x^2)
}
triple <- function(x){
  return(x^3)
}

xs <- seq(-3,3,0.01)
dou  <- double(xs)
tri <- triple(xs)

plot(rep(xs, 2), c(dou, tri), typ="n")
lines(xs, dou, col="red")
lines(xs, tri, col="green")

Plot

2 个答案:

答案 0 :(得分:5)

使用ggplot2时,无需在绘图前应用这些功能。您可以告诉ggplot2使用您的功能。

library(ggplot2)
ggplot(as.data.frame(xs), aes(xs)) +
  stat_function(fun = double, colour = "red") + 
  stat_function(fun = triple, colour = "green")

enter image description here

答案 1 :(得分:2)

您可以使用stat_function,但由于您未在基础图中使用curve,我认为您正在寻找带有geom_line的简单散点图。

  1. 将您的数据放入data.frame:ggplot2与data.frame一起用作数据源。
  2. 以长格式重新整形数据:aes以长格式工作,通常根据第三个变量z绘制x与y的关系。
  3. 例如:

    dat <- data.frame(xs=xs,dou=dou,tri=tri)
    library(reshape2)
    library(ggplot2)
    ggplot(melt(dat,id.vars='xs'),
           aes(xs,value,color=variable))+
      geom_line()
    

    enter image description here

    编辑

    使用基本图表,您可以使用curve

    简化图表
    curve(x^3,-3,3,col='green',n=600)
    curve(x^2,-3,3,col='red',n=600,add=TRUE)
    

    enter image description here