[R] help with making a function of scatter plot with multiple variables

hadley wickham h.wickham at gmail.com
Fri Sep 21 14:16:45 CEST 2007


Tom,

It might be easier to move to a higher order plotting model, like
ggplot2 or lattice.

For a similar plot in ggplot2, all you would do is:

qplot(mpg, wt, data=mtcars, col=factor(cyl), shape=factor(cyl))

you would need to do some tweaking to get the plot exactly like you
want, but the defaults in ggplot have been chosen to have good
perceptual properties.

And similarly in lattice:
xyplot(wt ~ mpg, data=mtcars, group=factor(cyl))


Hadley

On 9/21/07, Tom Cohen <tom.cohen78 at yahoo.se> wrote:
> Thanks Jim for the excellent solution.
>
> Can I make this function more flexible for the usage of different numbers of parameters?
>
>   Tom
> jim holtman <jholtman at gmail.com> skrev:
>   The simple way is to enclose it in a 'function' and pass parameters.
> Assuming that you have the same number of parameters, then the
> following will do:
>
> my.func <- function(x,y,d1,v1,s1,t1,s2,t2,s3,t3,s4,t4,s5,t5)
> {
> op <- par(bg = "grey97")
> par(mfrow=c(1,2))
> plot(d1,v1, pch="v", col="orange",cex=0.6, lwd=2,
> xlab="day", ylab="resp",cex.main =1,font.main= 1,main=" Surv
> data",ylim=y,xlim=x,
> col.main="navyblue",col.lab="navyblue",cex.lab=0.7)
>
> points(s1,t1, pch="A", col="green4", cex=1)
> points(s2,t2, pch="B",col="navyblue", cex=1)
> points(s3,t3, pch="C",col="red", cex=1)
> points(s4,t4, pch="D",col="darkviolet", cex=1)
> points(s5,t5, pch="E",col="blue", cex=1)
> legend("topright",lbels,col=c("orange","green4","navyblue","red","darkviolet","blue"),
> text.col=c("orange","green4","navyblue","red","darkviolet","steelblue"),
> pch=c("v","A","B","C","D","E"),bg='gray100',cex=0.7,box.lty=1,box.lwd=1)
> abline(h = -1:9, v = 0:8, col = "lightgray", lty=3)
> par(op)
> }
>
> # call it with
>
> my.func(x,y,d1,v1,s1,t1,s2,t2,s3,t3,s4,t4,s5,t5)
>
> You might also include the data in a list to make it easier
>
>
>
> On 9/20/07, Tom Cohen wrote:
> > Dear list,
> >
> > I have done a scatter plot of multiple variables in the same graph, with different col and pch. I managed to do it with the following code but not know how to make a function of these so that next time if I want to do similar graph but with new variables, I dont have to copy the code and then change the old variables with the new ones but just call a function with the new variables. I dont have any experience in making a function and would be very grateful if you can help me. A function will shorten my prog dramatically, since I repeat tthis type of graph alots in my analysis.
> >
> > Thanks in advance,
> > Tom
> >
> > op <- par(bg = "grey97")
> > par(mfrow=c(1,2))
> > plot(d1,v1, pch="v", col="orange",cex=0.6, lwd=2,
> > xlab="day", ylab="resp",cex.main =1,font.main= 1,main=" Surv data",ylim=y,xlim=x,
> > col.main="navyblue",col.lab="navyblue",cex.lab=0.7)
> >
> > points(s1,t1, pch="A", col="green4", cex=1)
> > points(s2,t2, pch="B",col="navyblue", cex=1)
> > points(s3,t3, pch="C",col="red", cex=1)
> > points(s4,t4, pch="D",col="darkviolet", cex=1)
> > points(s5,t5, pch="E",col="blue", cex=1)
> > legend("topright",lbels,col=c("orange","green4","navyblue","red","darkviolet","blue"),
> > text.col=c("orange","green4","navyblue","red","darkviolet","steelblue"),
> > pch=c("v","A","B","C","D","E"),bg='gray100',cex=0.7,box.lty=1,box.lwd=1)
> > abline(h = -1:9, v = 0:8, col = "lightgray", lty=3)
> > par(op)
> >
> >
> >
> >
> > ---------------------------------
> >
> > Jämför pris på flygbiljetter och hotellrum: http://shopping.yahoo.se/c-169901-resor-biljetter.html
> > [[alternative HTML version deleted]]
> >
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
> >
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem you are trying to solve?
>
>
>
> ---------------------------------
> Låna pengar utan säkerhet.
>
>         [[alternative HTML version deleted]]
>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>


-- 
http://had.co.nz/



More information about the R-help mailing list