[R] a very particular plot

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Wed Jul 14 16:45:42 CEST 2010


Ggplot will only produce legends based on factors. Integers are not factors.

"Ian Bentley" <ian.bentley at gmail.com> wrote:

>Hi Dennis,
>
>Thanks for the quick reply.
>Once I removed solid = TRUE, which was giving errors, the code is accepted
>fine.
>
>It's strange though, no legend appears.  Even when I try something simple
>like:
>p + scale_shape_manual(values=1:3)
>
>No legend appears.  I can't find any similar problems on google.
>
>Thanks again,
>Ian
>
>
>On 14 July 2010 03:56, Dennis Murphy <djmuser at gmail.com> wrote:
>
>> Hi:
>>
>> This is untested, so caveat emptor. I believe Hadley is busy teaching a
>> ggplot2 course this week so his availability is limited at best. I guess I
>> can give it a shot...
>>
>> You need a scale_shape_* construct to add to your plot, perhaps something
>> like
>>
>> scale_shape_manual('Statistic', breaks = 1:3, labels = c('Min', 'Median',
>> 'Max'), solid = TRUE)
>>
>> The 'Statistic' puts a title on the legend, the breaks argument should
>> supply the values of the shapes,
>> the labels argument should provide the label to associate to each shape,
>> and solid = TRUE should
>> produce the same behavior as in the geom_point() calls wrt shapes. [Notice
>> how I say 'should'...]
>>
>> No guarantees this will work - scales are one of my greatest frustrations
>> in ggplot2. Expect this to be the first of several iterations you'll have to
>> go through to get it to work the way you want.
>>
>> HTH,
>> Dennis
>>
>>
>> On Tue, Jul 13, 2010 at 4:32 PM, Ian Bentley <ian.bentley at gmail.com>wrote:
>>
>>> I've got a couple of more changes that I want to make to my plot, and I
>>> can't figure things out.  Thanks for all the help.
>>>
>>> I'm using this R script
>>>
>>> library(ggplot2)
>>> library(lattice)
>>> # Generate 50 data sets of size 100 and assign them to a list object
>>>
>>> low <- 1
>>> n <- 50
>>> #Load data from file
>>> for(i in low:n) assign(paste('df', i, sep = ''),
>>>         read.table(paste("tot-LinkedList",i*100,"query.log",sep=''),
>>> header=TRUE))
>>>
>>>
>>> dnames <- paste('df', low:n, sep = '')
>>> l <- vector('list', n)
>>> for(i in seq_along(dnames)) l[[i]] <- with(get(dnames[i]), Send + Receive)
>>> ml <- melt(l)
>>>
>>> dsum <- ddply(ml, 'L1', summarise, mins = min(value), meds =
>>> median(value),
>>>               maxs = max(value))
>>>
>>>
>>> p <- ggplot(ml, aes(x = L1*100, y = value)) +
>>>     geom_point(alpha = 0.2) +
>>>     geom_point(data = dsum, aes(y = mins), shape = 1, size = 3,
>>> solid=TRUE, colour='blue') +
>>>     geom_point(data = dsum, aes(y = meds), shape = 2, size = 3,
>>> solid=TRUE, colour='blue') +
>>>     geom_point(data = dsum, aes(y = maxs), shape = 3, size = 3,
>>> solid=TRUE, colour='blue') +
>>>     geom_smooth(data = dsum, aes(y = mins)) +
>>>     geom_smooth(data = dsum, aes(y = meds)) +
>>>     geom_smooth(data = dsum, aes(y = maxs)) +
>>>     opts(axis.text.x = theme_text(size = 7, angle = 90, hjust = 1), title
>>> = 'Linked List Query Costs Increasing Network Size')  +
>>>     xlab('Network Complexity (nodes)') + ylab('Battery Cost (uJ)') +
>>>
>>> --END--
>>>
>>> And this works great, except that I think that I am not being very R'y,
>>> since now I want to add a legend saying that circle (i.e. shape 1) is the
>>> minimum, and shape 2 is the med, and shape 3 is max.
>>>
>>> I'd also like to be able to move the legend to the top left part of the
>>> plot since that area is empty anyways.
>>>
>>> Is there any way that I can do it easily?
>>>
>>> Thanks
>>> Ian
>>>
>>>
>>>
>>>
>>>
>>> On 11 July 2010 10:29, Ian Bentley <ian.bentley at gmail.com> wrote:
>>>
>>>> Thanks to both of you!
>>>>
>>>>
>>>> I was able to get exactly the plot I was looking for!
>>>>
>>>> Ian
>>>>
>>>> On 11 July 2010 09:30, Hadley Wickham <hadley at rice.edu> wrote:
>>>>
>>>>> Hi Ian,
>>>>>
>>>>> Have a look at the examples in http://had.co.nz/ggplot2/geom_tile.html
>>>>> for some ideas on how to do this with ggplot2.
>>>>>
>>>>> Hadley
>>>>>
>>>>> On Sat, Jul 10, 2010 at 8:10 PM, Ian Bentley <ian.bentley at gmail.com>
>>>>> wrote:
>>>>> > Hi all,
>>>>> >
>>>>> > Thanks for the really great help I've received on this board in the
>>>>> past.
>>>>> >
>>>>> > I have a very particular graph that I'm trying to plot, and I'm not
>>>>> really
>>>>> > sure how to do it.  I think I should be able to use ggplot for this,
>>>>> but I'm
>>>>> > not really sure how.
>>>>> >
>>>>> > I have a data.frame which contains fifty sub frames containing one
>>>>> hundred
>>>>> > data points each.
>>>>> >
>>>>> > I can do a histogram of each of these sub frames individually, and see
>>>>> the
>>>>> > distribution.  I can also plot the mean & standard deviation of the
>>>>> fifty
>>>>> > together in one plot, where the x axis identifies the subframe to
>>>>> which it
>>>>> > refers.
>>>>> >
>>>>> > What I'd like to do is combine these two things, so that I have a 2 -d
>>>>> > graph.
>>>>> >
>>>>> > The x axis specifies the sub-frame.
>>>>> > The y axis is just the data.
>>>>> >
>>>>> > Each x column plots the minimum of the data in the sub frame, the
>>>>> maximum,
>>>>> > and the median, as points.  AND each x column also displays histogram
>>>>> data,
>>>>> > so that the y values which have more density in the subframe are
>>>>> darker, and
>>>>> > the ones with less density are lighter.
>>>>> >
>>>>> > I know this is fairly particular, and may not be possible, but it
>>>>> would be
>>>>> > really great for me!
>>>>> >
>>>>> > If anyone can help - thanks!
>>>>> >
>>>>> > --
>>>>> > Ian Bentley
>>>>> > M.Sc. Candidate
>>>>> > Queen's University
>>>>> > Kingston, Ontario
>>>>> >
>>>>> >        [[alternative HTML version deleted]]
>>>>> >
>>>>> > ______________________________________________
>>>>> > R-help at 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.
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Assistant Professor / Dobelman Family Junior Chair
>>>>> Department of Statistics / Rice University
>>>>> http://had.co.nz/
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Ian Bentley
>>>> M.Sc. Candidate
>>>> Queen's University
>>>> Kingston, Ontario
>>>>
>>>
>>>
>>>
>>> --
>>> Ian Bentley
>>> M.Sc. Candidate
>>> Queen's University
>>> Kingston, Ontario
>>>
>>
>>
>
>
>-- 
>Ian Bentley
>M.Sc. Candidate
>Queen's University
>Kingston, Ontario
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-help at 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.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list