emacs-orgmode
[Top][All Lists]
Advanced

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

Re: R session and plotting in x11 window


From: Berry, Charles
Subject: Re: R session and plotting in x11 window
Date: Tue, 7 Apr 2020 17:37:01 +0000

Matt,

I am glad you got past your roadblock.

I am puzzled by your use of `dev.set'. I have never explicitly invoked that 
function. 

FWIW, I have used R for more than 20 years and routinely write packages or 
reports that create graphics.

And I use ESS (and used its predecessor S-mode) as my principal IDE for that 
work. (Org relies on ESS for modes relating to R.) I routinely use Mac OS, but 
occasionally work with Linux and Windows.

Invoking R from the terminal window (or equivalent on Windows) and typing 
interactive commands, I get:

> dev.cur()
null device 
          1 
> plot(1:5)
> dev.cur()
quartz 
     2 
> 

Note there is no call to dev.set(). 

The quartz device (the interactive default on Mac OS) is invoked implicitly by 
plot as described by the `Details' in the help page displayed by typing 
`?device' as the R prompt"

"If no device is open, calling any high-level graphics function will cause a 
device to be opened."

If I start emacs and open an org buffer with just this src block in it:

#+begin_src R
  dev.cur()
  plot(1:5)
  dev.cur()
#+end_src

then place point in the src block and type the line in this example block

#+begin_example
C-c ' C-n RET C-n C-n
#+end_example

I end up with the same output as above in my *R* session buffer. A new graphics 
device is opened and the plot appears in it.


Best,

Chuck

> On Apr 6, 2020, at 6:26 PM, Matt Price <address@hidden> wrote:
> 
> 
> 
> On Sun, Apr 5, 2020 at 1:19 PM Berry, Charles <address@hidden> wrote:
> 
> 
> > On Apr 4, 2020, at 4:27 PM, Matt Price <address@hidden> wrote:
> > 
> > Does anyone know much about the difference between an R session opened by 
> > typing M-x R, and the R session opened by org-babel?
> 
> 
> Short answer: almost none.
> 
> Long answer: what `org-babel-R-initite-session' and friends do.
> :-) thanks, I should have been looking for that 
> 
> > 
> > I'm just learning R and my usual method for learning a language is to keep 
> > a kind of notebook in org with code snippets they I can execute and iterate 
> > on rapidly as I learn. This works great in R when I'm just doing math.  
> > When I am working on plots, it would be nice to have them open up quickly 
> > either in emacs or in the standard x11 window that R session opened switch 
> > M-x R opens up.  
> > 
> > I know I can set the src block headers to produ e a file, but when I'm just 
> > iterating rapidly I often switch back and forth between a data output and a 
> > graphical output, and typing/erasing those headers is clunky and slow. It 
> > would be easier to just paste the plot command into the console and have it 
> > pop open the window... But that doesn't seem to work. Anyone know if I can 
> > tweak something to make that possible?
> > 
> 
> 
> I sam really puzzled by this. Do you have an ECM that illustrates this?
> 
> Working interactively on my Mac (Quartz - X11 is the device), I routinely do 
> what you describe - usually working from the src edit buffer - and the plots 
> are displayed (and older plots are available via clover-left or some such).
> 
> If I had to guess, I'd say that you are opening an R session, but not using 
> it. If you execute a src block, but it does not have a `:session' header, a 
> new instance of R will create a plot file and then exit. If you look in the 
> default directory, you would see `Rplots.pdf' or some such.
> 
> The only other thing that comes to mind is that you opened a device that is 
> holding on to all your plots. Try `dev.cur()' in R immediately before and 
> after you create a plot and see what the result is.
> 
> This was the problem. I don't see that I'm calling dev.set() anywhere but 
> when the session initiates dev.cur() returns
> 
> null
>      1
> 
> calling dev.set(1) or dev.set(2) launches an R_x11 window and future plots 
> are displayed there.  As I say, I'm just learning R, and I don't really 
> understand how the device is set up. I also don't understand why it would be 
> set to X11 in a plain-old R session, but not in an org-babel R session. Most 
> references to "device" in ~ob-R.el~ seem to be managing file outputs, and 
> "X11". For now I don't think I'll explore  a proper solution as I'm already 
> pretty far down a rabit hole just learning R at all!  But thanks very much 
> for this workaround. 
> 
> Matt
> HTH,
> 
> Chuck





reply via email to

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