On Mon, Jun 16, 2008 at 3:55 PM, hadley wickham <h.wickham@gmail.com> wrote:

> On Mon, Jun 16, 2008 at 7:52 AM, mfrumin <michael@frumin.net> wrote:
> >
> > Dear all,
> >
> > With normal plotting, one can size a set of points in a plot using a
> vector
> > argument to cex in the points() function.  This works whether you are
> using
> > one of the standard R symbols (i.e. 19+) or some ascii symbol, such as
> '/'
> >
> > eg:
> > plot(1:10, 1:10, type='n');
> > points(1:10, 1:10, cex = 1:10, pch = '/')
> >
> > Trying to make the transition to ggplot2, I find that the aesthetic size
> > mapping does not apply if i do geom_point(..., shape='/') -- the points
> show
> > up looking like '/' but they are not sized.  Is there anything to do
> about
> > this?
> >
> > eg:
> > ggplot(data = data.frame(x = 1:10, y = 1:10, size = 1:10), aes(x = x, y =
> > y)) + geom_point(mapping = aes(size = size), shape = '/')
> >
> > the plot that I'm making really needs a vertically oriented mark, not a
> > round-ish point/square/triangle that takes up a lot of area. am I totally
> > out of luck?
>
> Hmmm, I'd never noticed this "feature" of grid before.  To size the
> points, I'm using the size argument of grid.points, which doesn't seem
> to affect the size of character based plotting symbols (because the
> are using the fontsize graphical parameter).  I've cc'd Paul on this
> email so he can confirm whether this is a bug or by design.
>
> Regardless, you can make ggplot size the symbols correctly by running
> the following code:
>
> GeomPoint$draw <- function(., data, scales, coordinates, ...) {
>    with(coordinates$transform(data),
>      ggname(.$my_name(), pointsGrob(x, y, size=unit(size, "mm"), pch=shape,
>      gp=gpar(col=colour, fill = fill, fontsize = size * .pt)))
>    )
>  }
>
> Hadley
>
> --
> http://had.co.nz/
>

Thanks for getting back to me so quickly.  This mostly works, in that:

- When I ran it just as you sent it, I get this error:
    Error in inherits(x, "factor") : object "fill" not found

- but when I took out "fill = fill" from your suggestion above, I get the
desired effect.

- but this does not change the shape shown in the scale for the sized
points.  they are still big circles.  but come to think of it, even setting
shape = 20 or some other vector point-type, this doesn't effect the shape
shown in the scale/legend thingy.  so I guess that's a separate question, I
will post it under separate cover.

thanks!

mike

	[[alternative HTML version deleted]]

