* Tangle including code generating graphics for :results graphics @ 2015-09-24 8:26 Rainer M Krug 2015-09-24 8:41 ` Andreas Leha 0 siblings, 1 reply; 3+ messages in thread From: Rainer M Krug @ 2015-09-24 8:26 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1281 bytes --] Hi Is it possible to tangle an R code block including the code which is generating the graphs when using =:results graphics= ? I would like to tangle these code blocks generating the graphs as I would like to have a script which I can use to easily update all graphs when the simulated input data is updated. I have this for the actual analysis which works perfectly, but would like to have the same for the graphs. At the same time, I like the clarity of specifying :width and :height and other parameter for the plotting as header arguments. I have ,---- | :PROPERTIES: | :header-args+: :prologue "env <- fitBFGS; attach(env)" | :header-args+: :epilogue "detach(env); rm(env)" | :END: `---- and this is tangled perfectly - but obviously not the code for plotting. Is there an argument / setting to enable this? Thanks, Rainer -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer@krugs.de Skype: RMkrug PGP: 0x0F52F982 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 454 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Tangle including code generating graphics for :results graphics 2015-09-24 8:26 Tangle including code generating graphics for :results graphics Rainer M Krug @ 2015-09-24 8:41 ` Andreas Leha 2015-09-24 9:03 ` Rainer M Krug 0 siblings, 1 reply; 3+ messages in thread From: Andreas Leha @ 2015-09-24 8:41 UTC (permalink / raw) To: emacs-orgmode Hi Rainer, Rainer M Krug <Rainer@krugs.de> writes: > Hi > > Is it possible to tangle an R code block including the code which is > generating the graphs when using =:results graphics= ? > > I would like to tangle these code blocks generating the graphs as I > would like to have a script which I can use to easily update all graphs > when the simulated input data is updated. I have this for the actual > analysis which works perfectly, but would like to have the same for the > graphs. At the same time, I like the clarity of specifying :width and > :height and other parameter for the plotting as header arguments. > > I have > > ,---- > | :PROPERTIES: > | :header-args+: :prologue "env <- fitBFGS; attach(env)" > | :header-args+: :epilogue "detach(env); rm(env)" > | :END: > `---- > > and this is tangled perfectly - but obviously not the code for > plotting. Is there an argument / setting to enable this? > > Thanks, > > Rainer That is a very relevant question and I'd be interested in the answer as well. But I am not aware of any support by Org mode for this. I guess calling `org-babel-expand-src-block' prior to tangling would answer your needs? This would be desirable not only for plotting code blocks, also data passed to code block is 'lost' during tangling. I think it would be good to have a source block header argument, say `:tangleexpanded', controlling such functionality. WDYT? Regards, Andreas ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Tangle including code generating graphics for :results graphics 2015-09-24 8:41 ` Andreas Leha @ 2015-09-24 9:03 ` Rainer M Krug 0 siblings, 0 replies; 3+ messages in thread From: Rainer M Krug @ 2015-09-24 9:03 UTC (permalink / raw) To: Andreas Leha; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 3476 bytes --] Andreas Leha <andreas.leha@med.uni-goettingen.de> writes: > Hi Rainer, > > Rainer M Krug <Rainer@krugs.de> writes: >> Hi >> >> Is it possible to tangle an R code block including the code which is >> generating the graphs when using =:results graphics= ? >> >> I would like to tangle these code blocks generating the graphs as I >> would like to have a script which I can use to easily update all graphs >> when the simulated input data is updated. I have this for the actual >> analysis which works perfectly, but would like to have the same for the >> graphs. At the same time, I like the clarity of specifying :width and >> :height and other parameter for the plotting as header arguments. >> >> I have >> >> ,---- >> | :PROPERTIES: >> | :header-args+: :prologue "env <- fitBFGS; attach(env)" >> | :header-args+: :epilogue "detach(env); rm(env)" >> | :END: >> `---- >> >> and this is tangled perfectly - but obviously not the code for >> plotting. Is there an argument / setting to enable this? >> >> Thanks, >> >> Rainer > > That is a very relevant question and I'd be interested in the answer as > well. But I am not aware of any support by Org mode for this. > > I guess calling `org-babel-expand-src-block' prior to tangling would > answer your needs? I don't think so - as this is doing the same as C-c. The graphics code is only added in the call of org-babel-execute:R so some refactoring would be necessary. In org-babel-execute:R there is the following code: #+begin_src emacs-lisp (full-body (let ((inside (list (org-babel-expand-body:R body params graphics-file)))) (mapconcat 'identity (if graphics-file (append (list (org-babel-R-construct-graphics-device-call graphics-file params)) inside (list "},error=function(e){plot(x=-1:1, y=-1:1, type='n', xlab='', ylab='', axes=FALSE); text(x=0, y=0, labels=e$message, col='red'); paste('ERROR', e$message, sep=' : ')}); dev.off()")) inside) "\n"))) #+end_src If this expansion is moved into org-babel-expand-body:R, it should work and *always* expand the graphics code (as org-babel-expand-body:R adds the :epilogue and :prologue). Then one would just need a new header argument and it should work. > > This would be desirable not only for plotting code blocks, also data > passed to code block is 'lost' during tangling. Yes - debugging the whole process of evaluation would also be much easier. > > I think it would be good to have a source block header argument, say > `:tangleexpanded', controlling such functionality. > > WDYT? Yes - that would be an ideal solution. But expanded is already used in a different context (noweb), so something like :tangleaseval would make sense, making clear that the code is tangled as it would be evaluated. Unfortunately, I have no time for looking into this at the moment. But it should be possible without to much hassle. Thanks, Rainer > > Regards, > Andreas > > -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer@krugs.de Skype: RMkrug PGP: 0x0F52F982 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 454 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-09-24 9:03 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-09-24 8:26 Tangle including code generating graphics for :results graphics Rainer M Krug 2015-09-24 8:41 ` Andreas Leha 2015-09-24 9:03 ` Rainer M Krug
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.