2

I fit 500 curves for two models. I plot each of the fits based on model to check for similarities. The trouble is one set of lines will overlay the other. In the example below the logistic lines are completely covered by the spline lines.

Is there a way I can plot both fits and prevent the overlapping so I can still see both sets of lines? Perhaps by changing colors or by using a different geom?

ggplot(data=fullData,aes(X,Y,color=Model,group=id))+geom_line()

enter image description here

> dput(head(fullData))
structure(list(X = c(-6, -5.97595190380762, -5.95190380761523, 
-5.92785571142285, -5.90380761523046, -5.87975951903808), Model = c("Logistic", 
"Logistic", "Logistic", "Logistic", "Logistic", "Logistic"), 
    Y = c(40.2327812336246, 40.2062250618146, 40.1837765087578, 
    40.1613100197852, 40.1387156930829, 40.1159930605682), id = c(1L, 
    1L, 1L, 1L, 1L, 1L)), .Names = c("X", "Model", "Y", "id"), row.names = c(NA, 
6L), class = "data.frame")
Glen
  • 1,722
  • 3
  • 18
  • 25
  • 6
    I would probably just adjust the alpha. If you post the dput() of your data (or at least a few rows of it) then people can post some examples. – David Jun 01 '13 at 16:01
  • @David Adjusting the alpha to a small level (.1) does help, thanks. I'm not sure how to post the data, since one fit is over a grid of 500 points... – Glen Jun 01 '13 at 16:10
  • @Glen: read http://tinyurl.com/reproducible-000 for tips on creating reproducible examples ... – Ben Bolker Jun 01 '13 at 16:41
  • 1
    The alpha level is what I was looking for. This question can be considered answered. – Glen Jun 02 '13 at 04:59

1 Answers1

6

Glad the alpha worked out for you. If you'd like to be able to accept + close the request you can just click on this example of added alpha (with some simulated data):

library(ggplot2)

#function to generate some data
makeLine <- function(x){
  set.seed(x)
  Y <- c(runif(1,38,42),runif(1,34,38),runif(1,28,32),runif(1,23,27),runif(1,10,20))
  X <- c(-6,-3,0,3,6)
  if(x > 40){
    model <- "Spline"
  } else {
    model <- "Logistic"
  }
  data.frame(X=X,Y=Y,id=x,model=model)
}

#make a data set
dat <- do.call(rbind,lapply(1:100,makeLine))

#add alpha to your plot
ggplot(data=dat,aes(X,Y,color=model,group=id)) + geom_line(alpha=0.15)

enter image description here

David
  • 9,284
  • 3
  • 41
  • 40