# Re: [R] use different symbols for frequency in a plot

From: Kerry Bush <kerryrekky_at_yahoo.com>
Date: Tue 09 Aug 2005 - 06:42:08 EST

Thank you.

But I only need three classes of freqnencies (in another words, only three kinds of symbols) for 1-5, 5-10 and above 10, not to use different symbols for different frequencies. Otherwise, clearly R will run out of available symbols and the plot is also hard to view.

Thank you anyway.

> Group by which variable ? If you mean the joint
> distribution of 'x' and
> 'y' then something along the following lines
>
> x <- rep( c(0.1, 0.2, 0.4, 0.5), c(5, 6, 10,
> 20) )
> y <- rep( c(0.5, 0.6, 1.2, 2.5, 3.0), c(3, 8, 8,
> 18, 4) )
>
> new <- factor( paste(x, y, sep="_") )
> tb <- table(new)
>
> pchcode <- cut(tb , c(-Inf, 1, 5, 6, 10, Inf),
> labels=F)
>
> tmp <- t( sapply( strsplit( names(tb),
> split="_") , c ) )
> df <- data.frame( x=tmp[ ,1], y=tmp[ ,2],
> freq=as.vector(tb), pchcode
> = pchcode -1 )
>
> x y freq pchcode
> 1 0.1 0.5 3 1
> 2 0.1 0.6 2 1
> 3 0.2 0.6 6 2
> 4 0.4 1.2 8 3
> 5 0.4 2.5 2 1
> 6 0.5 2.5 16 4
> 7 0.5 3 4 1
>
> And now to plot it, we use points() repeatedly.
>
> plot( as.numeric(df\$x), as.numeric(df\$y), type="n"
> )
>
> for( i in unique( df\$pchcode ) ){
> w <- which( df\$pchcode == i )
> points( df\$x[w], df\$y[w], pch=as.numeric(i) )
> }
>
> I am sure someone else will come up with a neater
> solution.
>
>
> Can I also suggest that you try the following
>
> plot( jitter(x), jitter(y) )
>
> or better still the following
>
> library(hexbin)
> plot( hexbin(x, y) )
>
>
>
> 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?
> >
> > ______________________________________________
> > R-help@stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help