annotate lisp/org/org-plot.el @ 101458:36abe982e7cd

2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-as-html): Turn \par into a paragraph. * org.el (org-agenda-tags-todo-honor-ignore-options): Declare variable. * org-table.el (org-table-insert-hline): Fix typo in fuction call to `backward-char'. * org-exp.el (org-export-as-html): Remove the initial space from colon examples. * org.el (org-scan-tags): Call `org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'. * org-agenda.el (org-agenda-todo-list, org-agenda-match-view): New customization groups. (org-agenda-tags-todo-honor-ignore-options): New option. (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item): New function. (org-agenda-get-todos): Use `org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-format-source-code-or-example): Escape HTML characters also in examples that anre not treated with htmlize. Also, just switch to EXAMPLE processing if we do not have a good version of htmlize. * org-rmail.el: Fix copyright notice. * org.el (org-activate-footnote-links): Improve footnote link highlighting. * org-footnote.el (org-footnote-normalize): Fix finding the end of a footnote definition at the end of the file. * org-table.el (org-table-get-specials): Add an imagined hline at the end of the table. This can be useful for references that want to go to the end of the table. Also fix bug when computing last row constants, in tables that do not start right at the right margin. (org-table-eval-formula): Match and replace remove references. (org-table-formula-substitute-names): Make sure that names inside a "remote" call are left alone, the will be replaced later when the remote call is handled. (org-table-convert-refs-to-rc): Do not convert things that might look like a reference, but are really part of an ID or namei n a remote reference. (org-table-get-remote-range): New function. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-faces.el (org-clock-overlay): Fix bug in face definition. * org-clock.el (org-clock-put-overlay): Use new face instead of `secondary-selection'. * org-faces.el (org-clock-overlay): New face. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-get-current-options): Include the option for publishing time stamps. * org.el (org-toggle-heading): Renamed from `org-toggel-region-headings'. No longer needs a region defined, but will use it if there is one. (org-ctrl-c-star): Simplified, relying more on the internal workings of `org-toggle-heading'. (org-toggle-item): Renamed from `org-toggle-region-items'. No longer needs a region defined, but will use it if there is one. (org-ctrl-c-minus): Simplified, relying more on the inernal workings of `org-toggle-item'. * org-export-latex.el (org-export-latex-preprocess): Fix bug in environment detection. Also, do real changes only in unprotected places. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-export-latex.el (org-export-latex-quotation-marks): Use `org-if-unprotected-1'. (org-export-latex-set-initial-vars): Check for class definition in property. * org-macs.el (org-if-unprotected-1): New macro. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-compat.el (org-count-lines): New function. * org-exp.el (org-export-format-source-code-or-example): Handle switches related to text areas. * org.el (org-activate-footnote-links): Don't allow match inside a link. * org-footnote.el (org-footnote-re): Don't allow match inside a link. * org-export-latex.el (org-export-latex-links): Keep a relative path relative also after export. * org-exp.el (org-export-html-scripts): Fix HTML snippet. * org.el (org-make-tags-matcher): Never use IDO for completing the tags matcher match string. (org-completing-read): Also remove the special biding for "?". * org-attach.el (org-attach-allow-inheritance): New option. (org-attach-inherited): New variable. (org-attach-dir): Handle properties related to the attachment directory. (org-attach-check-absolute-path): New function. (org-attach-set-directory, org-attach-set-inherit): New commands. (org-attach): Accommodate the new commands in the dispatcher. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-compat.el (org-fit-window-to-buffer): Fix bug with using `window-full-width-p'. * org-exp.el (org-export-as-html): Only check for images files that really can be inlined * org.el (org-image-file-name-regexp, org-file-image-p): Allow the list of extensions to be a parameter. * org-exp.el (org-export-html-inline-image-extensions): New variable. * org-agenda.el (org-prepare-agenda): Use `org-agenda-block-separator'. (org-agenda-block-separator): New option. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-export-latex.el (org-export-latex-tables): Call `org-table-clean-before-export' with the new optional argument. * org-exp.el (org-table-clean-before-export): New optional parameter MAYBE-QUOTED, allows for quoted characters like \# in first column. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-plot.el (org-plot/gnuplot): Fix text-ind parameter for histograms. * org-colview.el (org-colview-construct-allowed-dates): Better error catching when a date/time property does not have allowed values defined. * org-colview-xemacs.el (org-colview-construct-allowed-dates): Better error catching when a date/time property does not have allowed values defined. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-map-entries): Restore point and restriction after `org-map-entries'. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-time=, org-time<, org-time<=, org-time>) (org-time>=, org-time<>): Make sure both values are dates. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-archive.el (org-extract-archive-heading): Allow %s for file name also in achive location heading. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-archive.el (org-add-archive-files): Uniquify the list before returning it. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-compat.el (org-fit-window-to-buffer): Use `window-full-width-p'. * org-export-latex.el (org-export-latex-fixed-width): Enforce the space after the colon in short examples. * org-exp.el (org-export-protect-colon-examples): Rewritten, to enforce a space after the colon. However, we also allow lines that are *only* a colon. (org-export-as-html): Enforce the space after the colon in short examples. (org-export-preprocess-string): Do the colon example protection earlier. (org-export-remove-timestamps): Do not check for protection at the end of the line. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-format-latex-options): Add new matcher for single letters between dollars. (org-get-header): Function removed. (org-heading-components): New function. * org-exp.el (org-export-define-heading-targets): Record ID's also as alternative targets. (org-export-as-html): Interpret "id:" links to other files by preserving the relative path. * org-jsinfo.el (org-infojs-handle-options): Catch the case if v is nil. * org-exp.el (org-export-normalize-links): Protect the main link, to avoid special character processing. * org-export-latex.el (org-export-latex-special-keyword-regexp): New variable. (org-export-latex-special-string-regexps): Variable removed. (org-export-latex-keywords): Use the new regexp. * org-exp.el (org-export-handle-include-files): Fetch switches and put them into the BEGIN statement. * org-timer.el (org-timer-mode-line-string): New variable. * org-clock.el (org-clock-mode-line-map): Renamed from `org-clock-mode-map'. (org-clock-mode-line-timer): Renamed from `org-mode-line-timer'. (org-clock-update-mode-line): Renamed from `org-update-mode-line'. (org-clock-put-overlay): Renamed from `org-put-clock-overlay'. (org-clock-remove-overlays): Renamed from `org-remove-clock-overlays'. * org-timer.el (org-timer-pause-or-continue): Implement stopping and mode line display. (org-timer-stop): New command. (org-timer-seconds): Return correct time when timer is paused. (org-timer-mode-line-timer): New variable. (org-timer-set-mode-line, org-timer-update-mode-line): New functions. * org.el (org-insert-heading): Handle new value `auto' for `org-blank-before-new-entry'. (org-org-menu): Add new items for timer functions. * org-list.el (org-insert-item): Handle new value `auto' for `org-blank-before-new-entry'. * org.el (org-blank-before-new-entry): New value `auto', made default. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-normalize-links): If the link is also used as the description, protect the description. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-closest-date): Fix bug with yearly repeats, in combination with preference of the past as it is used for deadline and scheduling search. * org-exp.el (org-html-handle-time-stamps): No longer check for the `org-export-with-timestamps' option, because the preprocesser has taken care of this already. * org.el (org-entry-properties): Catch the case when this is called in a non-org-mode file. * org-export-latex.el (org-export-latex-remove-from-headlines): Variable made obsolete, also LaTeX export now uses the standard variables. (org-export-as-latex): Add the timestamps parameter to the preprocessor parameter list. (org-export-latex-content): Export the remaining keywords without considering to remove them. (org-export-latex-keywords-maybe): Make the REMOVE-LIST optional. Use bold font instead of tt font for the keywords. (org-export-latex-fontify-headline): Format headlines, assuming that all keywords still present should be published. (org-export-latex-keywords): Remove argument TIMESTAMPS and just publish what ever remains of the time stamps. (org-export-latex-list-parameters): New option. (org-export-latex-lists): Pass additional parameters to the list converter. * org-exp.el (org-export-preprocess-string): Remove clock lines and timestamps already in the preprocesor. (org-export-remove-timestamps, org-export-remove-clock-lines): New functions. (org-export-as-ascii, org-export-as-html): Add the timestamps parameter to the preprocessor parameter list. * org-list.el (org-list-parse-list): Parse for checkboxes. (org-list-to-generic): Introduce and handle new parameters :cbon and :cboff. (org-list-to-latex, org-list-to-html, org-list-to-texinfo): Add optional parameter PARAMS. * org-export-latex.el (org-export-latex-special-chars): Fix problems with interpreting dollar signs. (org-inside-latex-math-p): New function. (org-export-latex-preprocess): Protect all the math fragments. * org.el (org-latex-regexps): Allow a dash after a dollar. * org-w3m.el (org-w3m-copy-for-org-mode): Always deactivate the mark after copying. * org-agenda.el (org-run-agenda-series): Have series options set when finalizing the agenda. * org-exp.el (org-export-format-source-code-or-example): Protect the converted examples. * org.el (org-set-regexps-and-options): Fix the regexp `org-complex-heading-regexp'. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-edit-src-get-label-format): New function. (org-coderef-label-format): New option. (org-edit-src-code, org-edit-src-find-region-and-lang): Parse for a label format specification and make sure it is used in the edit buffer. (org-edit-src-get-label-format): New function. (org-store-link): Handle new coderef formats. (org-link-search): Handle new coderef formats. * org-footnote.el (org-footnote-create-definition) (org-footnote-goto-local-insertion-point): Make footnote insertion work correctly when the "Footnotes" headline is the last line in the buffer. * org.el (org-goto-marker-or-bmk): Expose context after jumping to the location. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-w3m.el (org-w3m): New customization group. (org-w3m-deactivate-mark): New option. (org-w3m-copy-for-org-mode): Deactivate region, unless the user option say not to. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-set-font-lock-defaults): Trigger footnote fontification. (org-activate-footnote-links): New function. (org-activate-links): New entry `footnote'. * org-faces.el (org-footnote): New face. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-macs.el (org-re): Handle the [:word:] class. * org-exp.el (org-export-preprocess-string): Call `org-export-protect-colon-examples'. (org-export-protect-colon-examples): Renamed from `org-export-protect-examples', and scope limited to lines starting with a colon. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-preprocess-string): Move the preprocess hook to after turning on Org-mode. (org-export-preprocess-after-include-files-hook) (org-export-preprocess-after-tree-selection-hook) (org-export-preprocess-before-backend-specifics-hook) (org-export-preprocess-final-hook): New hooks. (org-export-preprocess-string): Run the new hooks. * org.el (org-ctrl-c-minus): Fix indentation for new items. * org-footnote.el: New file. * org.el (org-footnote): Require footnote code. (org-startup-options): Add new footnote options. (org-mode-map): New keybindig for footnotes. (org-ctrl-c-ctrl-c): Add function at footnotes. (org-org-menu): New menu entries for footnotes. * org-export-latex.el (org-export-as-latex): Pass footnote variable to preprocessor. (org-export-latex-preprocess): Treat multiple references to a footnote. * org-exp.el (org-export-preprocess-string): Call `org-footnote-normalize'. (org-export-as-ascii, org-export-as-html): Pass footnote variable to preprocessor. (org-export-as-html): Treat multiple references to a footnote. 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com> * org-export-latex.el (org-export-latex-links): Handle coderef links. * org.el (org-bracket-link-analytic-regexp++): New variable. (org-make-link-regexps): Initialize `org-bracket-link-analytic-regexp++'. (org-store-link): Implement special case in edit-src buffer. (org-insert-link): No use of ide to insert stored links. (org-link-search): Implement special case for coderefs. * org-exp.el (org-export-html-scripts): New constant. (org-export-html-style-default): Add a new style for highlighted code. (org-export-code-refs): New variable. (org-export-preprocess-string): Initialize `org-export-code-refs'. Call `org-export-replace-src-segments-and-examples' No longer call `org-export-protect-examples'. (org-export-target-internal-links): Take care of coderef targets. (org-export-last-code-line-counter-value): New variable. (org-export-replace-src-segments-and-examples): Renamed from `org-export-replace-src-segments', and modified. (org-export-format-source-code-or-example): Renamed from `org-export-format-source-code'. (org-export-number-lines): New function. (org-export-as-ascii, org-export-as-html): Handle coderef links.
author Carsten Dominik <dominik@science.uva.nl>
date Sun, 25 Jan 2009 15:49:43 +0000
parents a9dc0e7c3f2b
children f5aedb5cbd80
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
1 ;;; org-plot.el --- Support for plotting from Org-mode
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
2
100908
a9dc0e7c3f2b Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100605
diff changeset
3 ;; Copyright (C) 2008, 2009 Free Software Foundation, Inc.
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
4 ;;
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
5 ;; Author: Eric Schulte <schulte dot eric at gmail dot com>
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
6 ;; Keywords: tables, plotting
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
7 ;; Homepage: http://orgmode.org
101458
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
8 ;; Version: 6.19a
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
9 ;;
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
10 ;; This file is part of GNU Emacs.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
11 ;;
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
15 ;; (at your option) any later version.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
16
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
20 ;; GNU General Public License for more details.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
21
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
22 ;; You should have received a copy of the GNU General Public License
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
24
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
25 ;;; Commentary:
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
26
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
27 ;; Borrows ideas and a couple of lines of code from org-exp.el.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
28
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
29 ;; Thanks to the org-mode mailing list for testing and implementation
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
30 ;; and feature suggestions
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
31
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
32 ;;; Code:
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
33 (require 'org)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
34 (require 'org-exp)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
35 (require 'org-table)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
36 (eval-and-compile
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
37 (require 'cl))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
38
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
39 (declare-function gnuplot-delchar-or-maybe-eof "ext:gnuplot" (arg))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
40 (declare-function gnuplot-mode "ext:gnuplot" ())
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
41 (declare-function gnuplot-send-buffer-to-gnuplot "ext:gnuplot" ())
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
42
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
43 (defvar org-plot/gnuplot-default-options
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
44 '((:plot-type . 2d)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
45 (:with . lines)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
46 (:ind . 0))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
47 "Default options to gnuplot used by `org-plot/gnuplot'")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
48
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
49 (defvar org-plot-timestamp-fmt nil)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
50
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
51 (defun org-plot/add-options-to-plist (p options)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
52 "Parse an OPTIONS line and set values in the property list P.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
53 Returns the resulting property list."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
54 (let (o)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
55 (when options
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
56 (let ((op '(("type" . :plot-type)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
57 ("script" . :script)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
58 ("line" . :line)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
59 ("set" . :set)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
60 ("title" . :title)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
61 ("ind" . :ind)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
62 ("deps" . :deps)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
63 ("with" . :with)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
64 ("file" . :file)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
65 ("labels" . :labels)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
66 ("map" . :map)
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
67 ("timefmt" . :timefmt)))
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
68 (multiples '("set" "line"))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
69 (regexp ":\\([\"][^\"]+?[\"]\\|[(][^)]+?[)]\\|[^ \t\n\r;,.]*\\)")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
70 (start 0)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
71 o)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
72 (while (setq o (pop op))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
73 (if (member (car o) multiples) ;; keys with multiple values
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
74 (while (string-match
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
75 (concat (regexp-quote (car o)) regexp)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
76 options start)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
77 (setq start (match-end 0))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
78 (setq p (plist-put p (cdr o)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
79 (cons (car (read-from-string
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
80 (match-string 1 options)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
81 (plist-get p (cdr o)))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
82 p)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
83 (if (string-match (concat (regexp-quote (car o)) regexp)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
84 options)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
85 (setq p (plist-put p (cdr o)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
86 (car (read-from-string
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
87 (match-string 1 options)))))))))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
88 p)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
89
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
90 (defun org-plot/goto-nearest-table ()
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
91 "Move the point forward to the beginning of nearest table.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
92 Return value is the point at the beginning of the table."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
93 (interactive) (move-beginning-of-line 1)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
94 (while (not (or (org-at-table-p) (< 0 (forward-line 1)))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
95 (goto-char (org-table-begin)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
96
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
97 (defun org-plot/collect-options (&optional params)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
98 "Collect options from an org-plot '#+Plot:' line.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
99 Accepts an optional property list PARAMS, to which the options
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
100 will be added. Returns the resulting property list."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
101 (interactive)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
102 (let ((line (thing-at-point 'line)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
103 (if (string-match "#\\+PLOT: +\\(.*\\)$" line)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
104 (org-plot/add-options-to-plist params (match-string 1 line))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
105 params)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
106
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
107 (defun org-plot-quote-timestamp-field (s)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
108 "Convert field S from timestamp to Unix time and export to gnuplot."
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
109 (format-time-string org-plot-timestamp-fmt (org-time-string-to-time s)))
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
110
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
111 (defun org-plot-quote-tsv-field (s)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
112 "Quote field S for export to gnuplot."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
113 (if (string-match org-table-number-regexp s) s
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
114 (if (string-match org-ts-regexp3 s)
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
115 (org-plot-quote-timestamp-field s)
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
116 (concat "\"" (mapconcat 'identity (split-string s "\"") "\"\"") "\""))))
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
117
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
118 (defun org-plot/gnuplot-to-data (table data-file params)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
119 "Export TABLE to DATA-FILE in a format readable by gnuplot.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
120 Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
121 (with-temp-file
100267
c851df8e004e 2008-12-07 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99866
diff changeset
122 data-file
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
123 (make-local-variable 'org-plot-timestamp-fmt)
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
124 (setq org-plot-timestamp-fmt (or
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
125 (plist-get params :timefmt)
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
126 "%Y-%m-%d-%H:%M:%S"))
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
127 (insert (orgtbl-to-generic
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
128 table
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
129 (org-combine-plists
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
130 '(:sep "\t" :fmt org-plot-quote-tsv-field)
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
131 params))))
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
132 nil)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
133
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
134 (defun org-plot/gnuplot-to-grid-data (table data-file params)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
135 "Export the data in TABLE to DATA-FILE for gnuplot.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
136 This means, in a format appropriate for grid plotting by gnuplot.
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
137 PARAMS specifies which columns of TABLE should be plotted as independent
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
138 and dependant variables."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
139 (interactive)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
140 (let* ((ind (- (plist-get params :ind) 1))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
141 (deps (if (plist-member params :deps)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
142 (mapcar (lambda (val) (- val 1)) (plist-get params :deps))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
143 (let (collector)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
144 (dotimes (col (length (first table)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
145 (setf collector (cons col collector)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
146 collector)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
147 row-vals (counter 0))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
148 (when (>= ind 0) ;; collect values of ind col
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
149 (setf row-vals (mapcar (lambda (row) (setf counter (+ 1 counter))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
150 (cons counter (nth ind row))) table)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
151 (when (or deps (>= ind 0)) ;; remove non-plotting columns
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
152 (setf deps (delq ind deps))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
153 (setf table (mapcar (lambda (row)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
154 (dotimes (col (length row))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
155 (unless (memq col deps)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
156 (setf (nth col row) nil)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
157 (delq nil row))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
158 table)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
159 ;; write table to gnuplot grid datafile format
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
160 (with-temp-file data-file
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
161 (let ((num-rows (length table)) (num-cols (length (first table)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
162 front-edge back-edge)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
163 (flet ((gnuplot-row (col row value)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
164 (setf col (+ 1 col)) (setf row (+ 1 row))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
165 (format "%f %f %f\n%f %f %f\n"
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
166 col (- row 0.5) value ;; lower edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
167 col (+ row 0.5) value))) ;; upper edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
168 (dotimes (col num-cols)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
169 (dotimes (row num-rows)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
170 (setf back-edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
171 (concat back-edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
172 (gnuplot-row (- col 1) row (string-to-number
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
173 (nth col (nth row table))))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
174 (setf front-edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
175 (concat front-edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
176 (gnuplot-row col row (string-to-number
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
177 (nth col (nth row table)))))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
178 ;; only insert once per row
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
179 (insert back-edge) (insert "\n") ;; back edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
180 (insert front-edge) (insert "\n") ;; front edge
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
181 (setf back-edge "") (setf front-edge "")))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
182 row-vals))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
183
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
184 (defun org-plot/gnuplot-script (data-file num-cols params)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
185 "Write a gnuplot script to DATA-FILE respecting the options set in PARAMS.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
186 NUM-COLS controls the number of columns plotted in a 2-d plot."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
187 (let* ((type (plist-get params :plot-type))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
188 (with (if (equal type 'grid)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
189 'pm3d
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
190 (plist-get params :with)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
191 (sets (plist-get params :set))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
192 (lines (plist-get params :line))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
193 (map (plist-get params :map))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
194 (title (plist-get params :title))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
195 (file (plist-get params :file))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
196 (ind (plist-get params :ind))
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
197 (time-ind (plist-get params :timeind))
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
198 (timefmt (plist-get params :timefmt))
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
199 (text-ind (plist-get params :textind))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
200 (deps (if (plist-member params :deps) (plist-get params :deps)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
201 (col-labels (plist-get params :labels))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
202 (x-labels (plist-get params :xlabels))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
203 (y-labels (plist-get params :ylabels))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
204 (plot-str "'%s' using %s%d%s with %s title '%s'")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
205 (plot-cmd (case type
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
206 ('2d "plot")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
207 ('3d "splot")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
208 ('grid "splot")))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
209 (script "reset") plot-lines)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
210 (flet ((add-to-script (line) (setf script (format "%s\n%s" script line))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
211 (when file ;; output file
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
212 (add-to-script (format "set term %s" (file-name-extension file)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
213 (add-to-script (format "set output '%s'" file)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
214 (case type ;; type
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
215 ('2d ())
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
216 ('3d (if map (add-to-script "set map")))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
217 ('grid (if map
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
218 (add-to-script "set pm3d map")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
219 (add-to-script "set pm3d"))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
220 (when title (add-to-script (format "set title '%s'" title))) ;; title
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
221 (when lines (mapc (lambda (el) (add-to-script el)) lines)) ;; line
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
222 (when sets ;; set
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
223 (mapc (lambda (el) (add-to-script (format "set %s" el))) sets))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
224 (when x-labels ;; x labels (xtics)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
225 (add-to-script
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
226 (format "set xtics (%s)"
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
227 (mapconcat (lambda (pair)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
228 (format "\"%s\" %d" (cdr pair) (car pair)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
229 x-labels ", "))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
230 (when y-labels ;; y labels (ytics)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
231 (add-to-script
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
232 (format "set ytics (%s)"
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
233 (mapconcat (lambda (pair)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
234 (format "\"%s\" %d" (cdr pair) (car pair)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
235 y-labels ", "))))
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
236 (when time-ind ;; timestamp index
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
237 (add-to-script "set xdata time")
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
238 (add-to-script (concat "set timefmt \""
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
239 (or timefmt ;; timefmt passed to gnuplot
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
240 "%Y-%m-%d-%H:%M:%S") "\"")))
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
241 (case type ;; plot command
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
242 ('2d (dotimes (col num-cols)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
243 (unless (and (equal type '2d)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
244 (or (and ind (equal (+ 1 col) ind))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
245 (and deps (not (member (+ 1 col) deps)))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
246 (setf plot-lines
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
247 (cons
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
248 (format plot-str data-file
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
249 (or (and (not text-ind) ind
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
250 (> ind 0) (format "%d:" ind)) "")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
251 (+ 1 col)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
252 (if text-ind (format ":xticlabel(%d)" ind) "")
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
253 with
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
254 (or (nth col col-labels) (format "%d" (+ 1 col))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
255 plot-lines)))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
256 ('3d
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
257 (setq plot-lines (list (format "'%s' matrix with %s title ''"
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
258 data-file with))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
259 ('grid
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
260 (setq plot-lines (list (format "'%s' with %s title ''"
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
261 data-file with)))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
262 (add-to-script
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
263 (concat plot-cmd " " (mapconcat 'identity (reverse plot-lines) ",\\\n ")))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
264 script)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
265
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
266 ;;-----------------------------------------------------------------------------
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
267 ;; facade functions
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
268 ;;;###autoload
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
269 (defun org-plot/gnuplot (&optional params)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
270 "Plot table using gnuplot. Gnuplot options can be specified with PARAMS.
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
271 If not given options will be taken from the +PLOT
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
272 line directly before or after the table."
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
273 (interactive)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
274 (require 'gnuplot)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
275 (save-window-excursion
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
276 (delete-other-windows)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
277 (when (get-buffer "*gnuplot*") ;; reset *gnuplot* if it already running
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
278 (save-excursion
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
279 (set-buffer "*gnuplot*") (goto-char (point-max))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
280 (gnuplot-delchar-or-maybe-eof nil)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
281 (org-plot/goto-nearest-table)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
282 ;; set default options
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
283 (mapc
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
284 (lambda (pair)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
285 (unless (plist-member params (car pair))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
286 (setf params (plist-put params (car pair) (cdr pair)))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
287 org-plot/gnuplot-default-options)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
288 ;; collect table and table information
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
289 (let* ((data-file (make-temp-file "org-plot"))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
290 (table (org-table-to-lisp))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
291 (num-cols (length (if (eq (first table) 'hline) (second table)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
292 (first table)))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
293 (while (equal 'hline (first table)) (setf table (cdr table)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
294 (when (equal (second table) 'hline)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
295 (setf params (plist-put params :labels (first table))) ;; headers to labels
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
296 (setf table (delq 'hline (cdr table)))) ;; clean non-data from table
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
297 ;; collect options
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
298 (save-excursion (while (and (equal 0 (forward-line -1))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
299 (looking-at "#\\+"))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
300 (setf params (org-plot/collect-options params))))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
301 ;; dump table to datafile (very different for grid)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
302 (case (plist-get params :plot-type)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
303 ('2d (org-plot/gnuplot-to-data table data-file params))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
304 ('3d (org-plot/gnuplot-to-data table data-file params))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
305 ('grid (let ((y-labels (org-plot/gnuplot-to-grid-data
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
306 table data-file params)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
307 (when y-labels (plist-put params :ylabels y-labels)))))
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
308 ;; check for timestamp ind column
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
309 (let ((ind (- (plist-get params :ind) 1)))
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
310 (when (and (>= ind 0) (equal '2d (plist-get params :plot-type)))
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
311 (if (= (length
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
312 (delq 0 (mapcar
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
313 (lambda (el)
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
314 (if (string-match org-ts-regexp3 el)
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
315 0 1))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
316 (mapcar (lambda (row) (nth ind row)) table)))) 0)
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
317 (plist-put params :timeind t)
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
318 ;; check for text ind column
101458
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
319
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
320 (if (or (string= (plist-get params :with) "hist")
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
321 (> (length
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
322 (delq 0 (mapcar
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
323 (lambda (el)
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
324 (if (string-match org-table-number-regexp el)
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
325 0 1))
36abe982e7cd 2009-01-25 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100908
diff changeset
326 (mapcar (lambda (row) (nth ind row)) table)))) 0))
100458
ba23e35d3eaf 2008-12-17 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 100448
diff changeset
327 (plist-put params :textind t)))))
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
328 ;; write script
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
329 (with-temp-buffer
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
330 (if (plist-get params :script) ;; user script
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
331 (progn (insert-file-contents (plist-get params :script))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
332 (goto-char (point-min))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
333 (while (re-search-forward "$datafile" nil t)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
334 (replace-match data-file nil nil)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
335 (insert
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
336 (org-plot/gnuplot-script data-file num-cols params)))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
337 ;; graph table
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
338 (gnuplot-mode)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
339 (gnuplot-send-buffer-to-gnuplot))
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
340 ;; cleanup
99501
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
341 (bury-buffer (get-buffer "*gnuplot*"))
e3acb52d33e1 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com>
Carsten Dominik <dominik@science.uva.nl>
parents: 99139
diff changeset
342 (delete-file data-file))))
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
343
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
344 (provide 'org-plot)
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
345
98696
7e941d6d7c4c Add arch tagline
Miles Bader <miles@gnu.org>
parents: 98653
diff changeset
346 ;; arch-tag: 5763f7c6-0c75-416d-b070-398ee4ec0eca
98653
3553ffaa9490 Switch coding system to unix.
Carsten Dominik <dominik@science.uva.nl>
parents: 98645
diff changeset
347 ;;; org-plot.el ends here