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: Nick Dokos
Subject: Re: [O] Referring to results rather than code block
Date: Mon, 19 May 2014 11:25:08 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux)

"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.


--8<---------------cut here---------------start------------->8---
#+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
--8<---------------cut here---------------end--------------->8---

Nick




reply via email to

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