On Mon, 2005-08-08 at 11:57 -0700, Kerry Bush wrote: > suppose I have the following data > > x<-c(rep(.1,5),rep(.2,6),rep(.4,10),rep(.5,20)) > y<-c(rep(.5,3),rep(.6,8),rep(1.2,8),rep(2.5,18),rep(3,4)) > > If I plot(x,y) in R, I will only get seven distinct > points. What I want to do is to use different symbols > to show the frequency at each point. > > e.g. if the frequncey is between 1 and 5, then I plot > the point as a circle; if the frequency is between 6 > and 10, then I plot the point as a square; if the > frequency is above 10, then I plot the point as a > triangle. > > I am not sure how to do this in R. Can anybody help me?
You might want to review this recent post by Deepayan Sarkar: https://stat.ethz.ch/pipermail/r-help/2005-July/074042.html with modest modification you can replace his example, which plots the frequencies with: x <- c(rep(.1,5),rep(.2,6),rep(.4,10),rep(.5,20)) y <- c(rep(.5,3),rep(.6,8),rep(1.2,8),rep(2.5,18),rep(3,4)) temp <- data.frame(x, y) foo <- subset(as.data.frame(table(temp)), Freq > 0) > foo x y Freq 1 0.1 0.5 3 5 0.1 0.6 2 6 0.2 0.6 6 11 0.4 1.2 8 15 0.4 2.5 2 16 0.5 2.5 16 20 0.5 3 4 # Use cut() to create the bins and specify the plotting symbols # for each bin, which are the 'label' values foo$sym <- with(foo, cut(Freq, c(0, 5, 10, Inf), labels = c(21, 22, 24))) # convert 'foo' to all numeric from factors above for plotting foo <- apply(foo, 2, function(x) as.numeric(as.character(x))) > foo x y Freq sym 1 0.1 0.5 3 21 5 0.1 0.6 2 21 6 0.2 0.6 6 22 11 0.4 1.2 8 22 15 0.4 2.5 2 21 16 0.5 2.5 16 24 20 0.5 3 4 21 # Now do the plot. Keep in mind that 'foo' is now # a matrix, rather than a data frame plot(foo[, "x"], foo[, "y"], pch = foo[, "sym"]) HTH, Marc Schwartz ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html