Re: [O] Referring to results rather than code block
Hi Nick, Nick Dokos writes: > "Loris Bennett" 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.
Re: [O] Referring to results rather than code block
"Loris Bennett" 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
[O] Referring to results rather than code block
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.