Is there any way to use more than one color or shape in the same plot. I would like to make the points different colors for various levels of a variable. I have tried a simple 'if' statement in the plot command, but I get an error message. Here is what I have tried and the error message I get: > plot(test, if(test[,1]<8) col="steelblue2" else col="wheat2")Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' and 'y' lengths differIn addition: Warning message:In if (test[, 1] < 8) col = "steelblue2" else col = "wheat2" : the condition has length > 1 and only the first element will be usedI know 'x' and 'y' lenghths do NOT differ. If I just do plot(test), it works perfectly. Is there any way to this?Thanks,Donna _________________________________________________________________ How well do you know your celebrity gossip? [[alternative HTML version deleted]]
As you have not given us a reproducible example (namely we don't really know what "test" is), there are likely better ways to do this than what I am about to suggest, and you can find examples in the relevant plot functions likely, but I think what you want can be achieved using ifelse: plot(test, col = ifelse(test[,1]<8 , "steelblue2" ,"wheat2") ) Haris Skiadas Department of Mathematics and Computer Science Hanover College On Mar 23, 2008, at 7:06 PM, Donna Tucker wrote:> > Is there any way to use more than one color or shape in the same > plot. I would like to make the points different colors for various > levels of a variable. I have tried a simple 'if' statement in the > plot command, but I get an error message. Here is what I have > tried and the error message I get: > plot(test, if(test[,1]<8) > col="steelblue2" else col="wheat2")Error in xy.coords(x, y, xlabel, > ylabel, log) : 'x' and 'y' lengths differIn addition: Warning > message:In if (test[, 1] < 8) col = "steelblue2" else col = > "wheat2" : the condition has length > 1 and only the first element > will be usedI know 'x' and 'y' lenghths do NOT differ. If I just > do plot(test), it works perfectly. Is there any way to this? > Thanks,Donna
Donna Tucker wrote:> Is there any way to use more than one color or shape in the same plot. I would like to make the points different colors for various levels of a variable. I have tried a simple 'if' statement in the plot command, but I get an error message. Here is what I have tried and the error message I get: > plot(test, if(test[,1]<8) col="steelblue2" else col="wheat2")Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' and 'y' lengths differIn addition: Warning message:In if (test[, 1] < 8) col = "steelblue2" else col = "wheat2" : the condition has length > 1 and only the first element will be usedI know 'x' and 'y' lenghths do NOT differ. If I just do plot(test), it works perfectly. Is there any way to this?Thanks,DonnaHi Donna, What is happening is that you have passed two arguments to "plot" without naming them. The first one (test) is interpreted as the "x" coordinates, and the second one: if(test[,1]<8) col="steelblue2" else col="wheat2" finishes up as "steelblue2" if test[1,1] is less than 8 or "wheat2" if not. This is interpreted as the "y" coordinates. Unless you have only one element in test (and of course we can infer that you have more), those lengths will differ. What you can do is to specify that your second argument is meant to be a color vector like this: plot(test,col=ifelse(test[,1]<8,"steelblue","wheat2")) Now of course I am assuming that "test" is a matrix or data frame with at least two columns. If it isn't, the above example will fall over and whinge. > How well do you know your celebrity gossip? I'm sorry, but I can't help you at all with that. Jim