* 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 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).