From mboxrd@z Thu Jan 1 00:00:00 1970 From: Feng Shu Subject: Re: org-babel R output table with plot Date: Thu, 27 Mar 2014 12:27:33 +0800 Message-ID: <87txakw9je.fsf@news.tumashu-localhost.org> References: <87txan8vvj.fsf@news.tumashu-localhost.org> <87mwgf87w9.fsf@news.tumashu-localhost.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58513) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WT1zw-0004id-60 for emacs-orgmode@gnu.org; Thu, 27 Mar 2014 00:33:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WT1zr-0004Ab-Fi for emacs-orgmode@gnu.org; Thu, 27 Mar 2014 00:33:00 -0400 Received: from mail-pb0-x230.google.com ([2607:f8b0:400e:c01::230]:40310) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WT1zr-0004AI-5t for emacs-orgmode@gnu.org; Thu, 27 Mar 2014 00:32:55 -0400 Received: by mail-pb0-f48.google.com with SMTP id md12so2915150pbc.35 for ; Wed, 26 Mar 2014 21:32:54 -0700 (PDT) In-Reply-To: (John Hendy's message of "Wed, 26 Mar 2014 21:55:02 -0500") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: John Hendy Cc: emacs-orgmode John Hendy writes: > On Mon, Mar 24, 2014 at 7:00 PM, Feng Shu wrote: >> John Hendy writes: >> >>> On Mon, Mar 24, 2014 at 10:22 AM, Feng Shu 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). I use loop to generate multi tables. There is a problem: only the first table generated from current R src. can be aligned correctly, which sometime is very annoy. The below hook can align all the tables generate from R code: #+begin_src elisp (add-hook 'org-babel-after-execute-hook 'eh-org-babel-align-tables) (defun eh-org-babel-align-tables (&optional info) "Align all tables in the result of the current source" (interactive) (let ((location (org-babel-where-is-src-block-result nil info))) (when location (save-excursion (goto-char location) (when (looking-at (concat org-babel-result-regexp ".*$")) (while (< (point) (progn (forward-line 1) (org-babel-result-end))) (when (org-at-table-p) (toggle-truncate-lines 1) (org-table-align) (goto-char (org-table-end))) (forward-line))))))) #+end_src > > 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 --