* Referring to results rather than code block
@ 2014-05-19 14:11 Loris Bennett
2014-05-19 15:25 ` Nick Dokos
0 siblings, 1 reply; 3+ messages in thread
From: Loris Bennett @ 2014-05-19 14:11 UTC (permalink / raw)
To: emacs-orgmode
Hi,
I have a code block like this
#+NAME: users_per_month
#+HEADER: :results append
#+BEGIN_SRC sh :dir /root@sadmin:
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?
Cheers,
Loris
--
This signature is currently under construction.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Referring to results rather than code block
2014-05-19 14:11 Referring to results rather than code block Loris Bennett
@ 2014-05-19 15:25 ` Nick Dokos
2014-05-20 8:55 ` Loris Bennett
0 siblings, 1 reply; 3+ messages in thread
From: Nick Dokos @ 2014-05-19 15:25 UTC (permalink / raw)
To: emacs-orgmode
"Loris Bennett" <loris.bennett@fu-berlin.de> writes:
> Hi,
>
> I have a code block like this
>
> #+NAME: users_per_month
> #+HEADER: :results append
> #+BEGIN_SRC sh :dir /root@sadmin:
> 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Referring to results rather than code block
2014-05-19 15:25 ` Nick Dokos
@ 2014-05-20 8:55 ` Loris Bennett
0 siblings, 0 replies; 3+ messages in thread
From: Loris Bennett @ 2014-05-20 8:55 UTC (permalink / raw)
To: emacs-orgmode
Hi Nick,
Nick Dokos <ndokos@gmail.com> writes:
> "Loris Bennett" <loris.bennett@fu-berlin.de> writes:
>
>> Hi,
>>
>> I have a code block like this
>>
>> #+NAME: users_per_month
>> #+HEADER: :results append
>> #+BEGIN_SRC sh :dir /root@sadmin:
>> 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.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-05-20 8:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-19 14:11 Referring to results rather than code block Loris Bennett
2014-05-19 15:25 ` Nick Dokos
2014-05-20 8:55 ` Loris Bennett
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).