[R] Add sum line to plot of multiple x values

Loris Bennett loris.bennett at fu-berlin.de
Tue Mar 10 10:15:17 CET 2015


Hi Petr,

See inline.

PIKAL Petr <petr.pikal at precheza.cz> writes:

> Hi
>
> see inline
>
>> -----Original Message-----
>> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Loris
>> Bennett
>> Sent: Monday, March 09, 2015 4:35 PM
>> To: r-help at stat.math.ethz.ch
>> Subject: Re: [R] Add sum line to plot of multiple x values
>>
>> PIKAL Petr <petr.pikal at precheza.cz> writes:
>>
>> > Hi
>> >
>> > Not extremely clear what do you want to plot. Do you want to add a
>> > line which marks total number of files each day regardless of user?
>> Or
>> > a total number of files regardless of date coloured by user?
>>
>> Sorry, I was unclear.  I meant that I would like to plot the following:
>>
>> 1. For each user: the number of files for each date (my code does this)
>> 2. The sum of files of all users for each date (this is what I still
>>    need)
>>
>> > In each case you shall search functions geom_hline or geom_abline
>> >
>> > http://stackoverflow.com/questions/13254441/add-a-horizontal-line-to-
>> plot-and-legend-in-ggplot2
>>
>> So I don't want a straight line
>
> but in your code is
>
>>> geom_line(data=d,aes(x=date,y=sum(files),group=date),colour='black')
>
> so you apparently want some sort of line.

Yes, but see below.

> anyway, if I do
>
> d.ag<-aggregate(d$files, list(d$date), sum)
>
> I can add
>
> p+geom_point(data=d.ag,aes(x=Group.1,y=x), size=5)
>
> and I get summary points.

Thanks, this works.

> If you want lines you can do
>
> p+geom_hline(data=d.ag,aes(yintercept=x, colour=Group.1))
>
> or you can fiddle with geom_segment

I don't want an hline, just a line joining the dots I get using
geom_point.  I thought something like

  p + geom_line(data=d.ag,aes(x=as.character(Group.1),y=x)

would work.  However, while I get a plot with axes labelled in the
correct ranges, no line is plotted.  Explicitly setting the colour with

  p + geom_line(data=d.ag,aes(x=as.character(Group.1),y=x),colour="red")

doesn't help.  What am I doing wrong?

>>
>> > ggplot is rather complicated but very flexible
>>
>> I don't mind ggplot being complicated, but I find the documentation a
>> little impenetrable.
>
> You can find plenty of help when you just try to google on the item
> searching. Actually this is what I do when the solution is not obvious
> or requires some hidden instruction.

This is what I normally resort to with varying degrees of success.  It
just seems a bit of a shame the some of the documentation for such a
good piece of software does indeed appear to be rather "hidden".

> Cheers
> Petr
>
>>
>> Cheers,
>>
>> Loris
>>
>>
>> >> -----Original Message-----
>> >> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of
>> Loris
>> >> Bennett
>> >> Sent: Monday, March 09, 2015 2:56 PM
>> >> To: r-help at stat.math.ethz.ch
>> >> Subject: [R] Add sum line to plot of multiple x values
>> >>
>> >> Hi,
>> >>
>> >> Here are my data:
>> >>
>> >> > d
>> >>    user files       date
>> >> 1 alice    18 2013-09-15
>> >> 2   bob     5 2013-09-15
>> >> 3 carol    21 2013-09-15
>> >> 4 alice    22 2013-09-08
>> >> 5   bob     9 2013-09-08
>> >> 6 carol    14 2013-09-08
>> >> 7 alice    26 2013-09-01
>> >> 8   bob     3 2013-09-01
>> >> 9 carol    22 2013-09-01
>> >>
>> >> I would like to plot the number of files against date for all users,
>> so
>> >> I have:
>> >>
>> >>   library(ggplot2)
>> >>
>> >>   people <- c("alice","bob","carol")
>> >>   user <- c(rep(people,3))
>> >>   files <- c(18,5,21,22,9,14,26,3,22)
>> >>   date <- c(rep("2013-09-15",3),rep("2013-09-08",3),rep("2013-09-
>> >> 01",3))
>> >>   d <- data.frame(user=user,files=files,date=date)
>> >>
>> >>   p <- ggplot()
>> >>   p <- p +
>> geom_line(data=d,aes(x=date,y=files,group=user,colour=user))
>> >>
>> >> I would now like to add a line to show the total number of files as
>> a
>> >> function of date.  I tried
>> >>
>> >>   p <- p +
>> >> geom_line(data=d,aes(x=date,y=sum(files),group=date),colour='black')
>> >>
>> >> I don't get a black line, but the plot is scaled such that I can see
>> >> that sum(file) for all values of 'file', rather than those for each
>> >> date, is being used.
>> >>
>> >> I would like to know how to do this correctly, but I would rather be
>> >> able to work it out for myself.  However, if I decide, say, that I
>> >> don't
>> >> know exactly what the 'group' argument does, how do I find it out?
>> >>
>> >> ?geom_line doesn't have it, although the examples there use it.
>> ?ggplot
>> >> doesn't mention it. ?group gives me stuff about formatting text
>> >> arguments. ??group only leads me to ?ggplot2::add_group, which also
>> >> does
>> >> not seem to help.
>> >>
>> >> Am I at fault for trying to learn R in an ad hoc manner, to which
>> the
>> >> documentation of R does not lend itself, or am I missing something?
>> >>
>> >> Cheers,
>> >>
>> >> Loris
>> >>
>> >> --
>> >> This signature is currently under construction.
>> >>

-- 
This signature is currently under construction.



More information about the R-help mailing list