Tom Cohen
2007-Sep-20 16:46 UTC
[R] help with making a function of scatter plot with multiple variables
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]]
jim holtman
2007-Sep-20 20:31 UTC
[R] help with making a function of scatter plot with multiple variables
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 <tom.cohen78 at yahoo.se> 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?