emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rmarkdown-like production of multiple plots in org


From: Berry, Charles
Subject: Re: rmarkdown-like production of multiple plots in org
Date: Thu, 2 Apr 2020 17:39:22 +0000


> On Mar 31, 2020, at 12:23 PM, Matt Price <address@hidden> wrote:
> 
> I'm completely new to R.
> 
> I've started working with a project that creates plots using the ggplot 
> package -- so by default it creates grid objects, rather than writing to 
> files.  
> 
> In rmarkdown/rstudio, I can write something like this in a SOMEFILE.Rmd : 
> 
> ```
> install_github('eeholmes/CoV19')
> library(CoV19)
> getdata();
> plot4(world, 'Ontario Canada') 
> plot2(world, 'Italy') 
> plot4(states, "WA")
> ```
> 
> I sort of love how the rmarkdown package will just create all 3 of those 
> plots, save them to auto-named files, and render to HTML.

Actually, this is knitr (which rmarkdown Imports) at work.  There are options 
as to how knitr will handle multiple plots in a chunk as described in

https://yihui.org/knitr/options/#plots

(which include `fig.show="animate"' to create an animation based on multiple 
plots!)

So this applies to various filetypes in addition to *.Rmd (*.Rnw, for one). 


>  In RStudio, running just that block will also create all three blocks and 
> display them in the editor.  
> 
> By contrast, creating a series of many plots in org is fairly tedious.  I 
> have to name the plot individually & put each function call in its own src 
> block. Is there any way to mimic the behaviour of rmarkdown instead? I odn't 
> understand babel or R enough to really even see how something like that could 
> be implemented, but I'd appreciate some pointers.  Thank you!

Getting babel to handle this seamlessly would be a significant effort.

You can use ox-ravel (https://github.com/chasberry/orgmode-accessories.git) to 
export to *.Rmd and then render the result.  However, that does not have the 
interactivity of `org-babel-execute-src-block' and does not insert the graphics 
into the *.org file. 

I suppose that a function could be created to narrow to the src block, export 
it as *.Rmd to a buffer, run that buffer as the `text' arg of knitr::knit, then 
add links for the png's back to the *.org file. I haven't thought much about 
this - getting this to work in a simple case would not be too hard, but there 
may be a can of worms that this approach opens.

HTH,

Chuck





reply via email to

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