emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Referring to results rather than code block


From: Loris Bennett
Subject: Re: [O] Referring to results rather than code block
Date: Tue, 20 May 2014 10:55:43 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux)

Hi Nick,

Nick Dokos <address@hidden> writes:

> "Loris Bennett" <address@hidden> writes:
>
>> Hi,
>>
>> I have a code block like this
>>
>> #+NAME: users_per_month
>> #+HEADER: :results append
>> #+BEGIN_SRC sh :dir /address@hidden:
>> sacct=/cm/shared/apps/slurm/current/bin/sacct
>> for y in {2014..2014}; do
>>     for m in {03..04}; do
>>         month=$y-$m
>>         first=$y-$m-01
>>         last=`date -d "$first + 1 month - 1 day" +"%Y-%m-%d"`
>>         n=`$sacct -S $first -E $last  -o user -X -n | sort | uniq | wc -l`
>>         echo $month $n
>>     done
>> done
>> #+END_SRC
>>
>> which produces something like this
>>
>> #+RESULTS: users_per_month
>> | 2012-01 |     1 |
>> | 2012-02 |    10 |
>> | 2012-03 |   100 |
>> | 2012-04 |  1000 |
>>
>> I'm using append because the generation of a datapoint takes a while.
>>
>> I'd like to plot the data with something like:
>>
>> #+NAME: plot_users_per_month
>> #+HEADER: var data=users_per_month
>> #+HEADER: :results output graphics
>> #+HEADER: :file ./users_per_month.pdf :exports both
>> #+HEADER: :session *r*
>> #+BEGIN_SRC R
>> library(ggplot2)
>>
>> bar_colour  <- "#69B4D8" # steely blue
>>
>> month <- data$V1
>> users <- data$V2
>> df <- data.frame(month,users)
>> p <- ggplot(df,aes(x=month,y=users)) +
>>   geom_bar(stat="identity",alpha=0.5,fill=bar_colour) +
>>       xlab("date") +
>>         ylab("users")
>> p
>> #+END_SRC
>>
>> However, this is just generating a plot of the data generated by the
>> source block and not of the total results table.
>>
>> Can I give the results block a different name to the source block, so
>> that I can refer to it directly, or should I be doing something
>> completely different?
>>
>
> I believe so: the source name ties the source block to the same named
> result block - that allows the source block to find the result block
> and modify it appropriately. The results block can be named and then
> that name can be used in the plotting block, e.g.
>
>
> #+name: foo
> #+BEGIN_SRC sh :results output table append :var n=5
> for x in $(seq $n)
> do
> echo $x $(expr $x \* $x)
> done
> #+END_SRC
>
> #+name: foo_results
> #+RESULTS: foo
> | 1 |  1 |
> | 2 |  4 |
> | 3 |  9 |
> | 4 | 16 |
> | 5 | 25 |
>
>
> #+NAME: plot_foo_results
> #+HEADER: :var data=foo_results
> #+HEADER: :file ./foo.pdf :exports both
> #+BEGIN_SRC gnuplot
> plot data
> #+END_SRC
>
> Nick

Oh, that's rather obvious *blush*.  I suppose I was thinking that the
whole results block is generated and it didn't occur to me to just give
it a name.

Thanks,

Loris  

-- 
This signature is currently under construction.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]