On Wed, Mar 4, 2009 at 10:52 AM, Dimitri Liakhovitski <ld7...@gmail.com> wrote: > Hello - and sorry for what might look like a simple graphics question. > > I am building an interaction plot for d: > > d=data.frame(xx=c(3,3,2,2,1,1),yy=c(4,3,4,3,4,3),zz=c(5.1,4.4,3.5,3.3,-1.1,-1.3)) > d[[1]]<-as.factor(d[[1]]) > d[[2]]<-as.factor(d[[2]]) > print(d) > > interaction.plot(d$xx, d$yy, d$zz, > type="b", col=c("red","blue"), legend=F, > lty=c(1,2), lwd=2, pch=c(18,24), > xlab="X Label", > ylab="Y Label", > main="Chart Label") > > I am trying and not succeeding in adding Y values (value labels in > Excel speak) near the data points on 3 lines of the graph. > I understand that I might have to use "text". But how do I tell text > to use the actual coordinates of the dots on the lines? > > > Thank you very much! >
I'm not understanding your trouble, exactly. I had not heard of "interaction.plot" before and so I've run your code and it is an interesting function. Thanks for providing the working example. I can help you with the text. It is easy to add text. A commmands like text( 1.3, 1, "whatever", pos=3) will put the word "whatever" on top of coordinates x and y. (you leave out pos=3 and R centes the text on the coordinates). If you need to find out x , y before running that, you can. the locator function will return coordinates. Run locator(1) and then left click on a point in the graph. Coordinates will pop out on the screen. And you can make the text placement depend on locator text(locator(1), "whatever", pos=3) I don't think you want to do that work interactively, however. It can be automated. You can add a column of names in your data frame and more or less automate the plotting as well. I did this to test. mylabels <- c("A","B","C","D","E","F") text(d$xx,d$zz, mylabels, pos=3) This almost works perfectly, but it plops the labels in the wrong spots. I'd like to change the command so that the position of the text for the red line would be on the right, while the position of the text for the blue line is on the left. It appears to me your variable yy is the one that separates the 2 lines. Correct? I observe: as.numeric(d$yy) [1] 2 1 2 1 2 1 We want the blue ones on the left, for them we need pos=2. For the others, we want pos=4 Ach. I tried this text( d$xx, d$zz, mylabels, pos=2*as.numeric(d$yy)) but it comes out backward. So how about this: text( d$xx, d$zz, mylabels, pos=as.numeric(d$yy)) That positions the red ones below the line and the blue ones to the left. That doesn't look too bad to me. Anyway, I think you get the idea. If you wanted to simply stop plotting the circles, and put the letters "right on" the spot, that would be easy as well. -- Paul E. Johnson Professor, Political Science 1541 Lilac Lane, Room 504 University of Kansas ______________________________________________ R-help@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.