From: "Berry, Charles" via "General discussions about Org-mode." <emacs-orgmode@gnu.org>
To: Matt Price <moptop99@gmail.com>
Cc: Org Mode <emacs-orgmode@gnu.org>
Subject: Re: R session and plotting in x11 window
Date: Tue, 7 Apr 2020 17:37:01 +0000 [thread overview]
Message-ID: <81A6614A-4E28-42C4-9245-01599CB4D498@ucsd.edu> (raw)
In-Reply-To: <CAN_Dec-YBMk2uonj+0+dOwOkNec3U1T9q_txZo0KX1OF31ub5A@mail.gmail.com>
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 <moptop99@gmail.com> wrote:
>
>
>
> On Sun, Apr 5, 2020 at 1:19 PM Berry, Charles <ccberry@health.ucsd.edu> wrote:
>
>
> > On Apr 4, 2020, at 4:27 PM, Matt Price <moptop99@gmail.com> 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
prev parent reply other threads:[~2020-04-07 17:38 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-04 23:27 R session and plotting in x11 window Matt Price
2020-04-05 17:19 ` Berry, Charles via General discussions about Org-mode.
2020-04-07 1:26 ` Matt Price
2020-04-07 11:36 ` briangpowell .
2020-04-07 17:37 ` Berry, Charles via General discussions about Org-mode. [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=81A6614A-4E28-42C4-9245-01599CB4D498@ucsd.edu \
--to=emacs-orgmode@gnu.org \
--cc=ccberry@health.ucsd.edu \
--cc=moptop99@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).