emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: John Hendy <jw.hendy@gmail.com>
To: Feng Shu <tumashu@gmail.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: org-babel R output table with plot
Date: Wed, 26 Mar 2014 21:55:02 -0500	[thread overview]
Message-ID: <CA+M2ft9f8JKGri8-en46VQSeh7ctPAH_ozwosR=r+NNqMx8fbw@mail.gmail.com> (raw)
In-Reply-To: <87mwgf87w9.fsf@news.tumashu-localhost.org>

On Mon, Mar 24, 2014 at 7:00 PM, Feng Shu <tumashu@gmail.com> wrote:
> John Hendy <jw.hendy@gmail.com> writes:
>
>> On Mon, Mar 24, 2014 at 10:22 AM, Feng Shu <tumashu@gmail.com> wrote:
>>> Hi everyone
>>>
>>> I want to R output table with plot, I use a solution below,
>>> Who can tell me other solutions?
>>>
>>
>> I sort of follow the below, but I think it would be more helpful to
>> describe what you *don't* like about the output below. In other words,
>> what are you trying to achieve that is not working below?
>>
>
> It just suit my need, but I want to know more simper solution, which let
> me type less code.

Hmmm. Not seeing a ton of ways to optimize, but it might depend on
your total usage scenario. How many of these types of table/plot
combinations are you creating? Just a couple sets, or a lot?

The plot command is the only one that looks inefficient since a babel
block with :file header would automate opening/closing a device... If
you defined your data.frame in another babel block and used the
:session argument, you could do something like this:

#+name: plot
#+header: :file /path/to/file.png :width 1600 :height 900 :res 200
#+begin_src R :session r :exports results :results output graphics

plot(data)

#+end_src

After that executes, you'll end up with a named results block which
you can manually add the #+caption to? I typically use something like
the above. Your solution is nice as one could add things like
#+attr_latex or #+begin/end_center code via the paste() function in
R... while mine saves having to manually do pnt(); plot(); dev.off().

Another option might be to generate all your plots in a loop, perhaps,
and then stick to just programmatically including them with Org
syntax? I essentially did that here:
- http://lists.gnu.org/archive/html/emacs-orgmode/2012-08/msg01167.html

Not really much different than what your'e doing, though, I suppose.
It would just scale nicely if you have various data sets and always
generate a table and plot from them all. Then you could create your
data.frames in a list and then lapply() through them with each of your
functions, printing the proper Org syntax as the result (with :results
drawer, as you're already using).

This thread also came to mind, as I was reusing lines like you are,
and keeping them in separate babel blocks. I got the suggestion to
call a named block, which might be of interest if you've not done that
before?
- General use: https://www.mail-archive.com/emacs-orgmode@gnu.org/msg56684.html
- Using a #+call line:
https://www.mail-archive.com/emacs-orgmode@gnu.org/msg56688.html


Sorry I can't be of more help!

John

  reply	other threads:[~2014-03-27  2:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-24 15:22 org-babel R output table with plot Feng Shu
2014-03-24 17:36 ` John Hendy
2014-03-25  0:00   ` Feng Shu
2014-03-27  2:55     ` John Hendy [this message]
2014-03-27  4:27       ` Feng Shu

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='CA+M2ft9f8JKGri8-en46VQSeh7ctPAH_ozwosR=r+NNqMx8fbw@mail.gmail.com' \
    --to=jw.hendy@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=tumashu@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).