Hello,
with this simple example,
#+TITLE: examplebug.org
#+AUTHOR: Eric S Fraga
* table references
#+tblname: mytable
| | A | B | C | D | E | F | G | H | I | Total |
|---+---+---+---+---+---+---+---+---+---+-------|
| 1 | 1 | 1 | | | 0 | | | 1 | | 3 |
| 2 | 1 | | | | 0 | | | 1 | | 2 |
| 3 | | | 2 | 1 | 0 | | | 1 | | 4 |
| 4 | | | 2 | 1 | | | | 1 | | 4 |
| 5 | | | 2 | | | | | | | 2 |
| 6 | | | | | | 1 | | | | 1 |
| 7 | | | | | | | 0 | | | 0 |
| 8 | | | | | | | | | 2 | 2 |
|---+---+---+---+---+---+---+---+---+---+-------|
#+TBLFM: $1=1+@-1::$11=vsum($2..$10)
#+begin_src gnuplot :var data=mytable[1:-1,10] :file histogram.pdf
set xrange [-0.5:25.5]
set yrange [0:4.2]
plot data with histograms notitle
#+end_src
where I am trying to plot out the last column using a histogram plot in
gnuplot, org fails with an error:
Debugger entered--Lisp error: (wrong-type-argument sequencep 3)
where the last function invoked was "orgtbl-format-line(3)".
The trace is attached. This is with org up to date as of a few minutes ago.
The trace shows that the column has been extracted exactly as I
wish. However, it would appear that the function may expect a sequence
and not just a single element? If I try to extract more than just one
column, everything is fine (although obviously the gnuplot directives
need to change...).
thanks,
eric
--
: Eric S Fraga (0xFFFCF67D), Emacs 24.4.50.2, Org release_8.2.5h-831-gcb9172-git
Debugger entered--Lisp error: (wrong-type-argument sequencep 3)
mapcar((lambda (f) (setq i (1+ i)) (let* ((efmt (orgtbl-get-fmt *orgtbl-efmt*
i)) (f (if (and efmt (string-match orgtbl-exp-regexp f)) (orgtbl-apply-fmt efmt
(match-string 1 f) (match-string 2 f)) f))) (orgtbl-apply-fmt (or
(orgtbl-get-fmt *orgtbl-fmt* i) *orgtbl-default-fmt*) f))) 3)
(let* ((i 0) (line (mapcar (function (lambda (f) (setq i (1+ i)) (let* (...
...) (orgtbl-apply-fmt ... f)))) line))) (setq *orgtbl-rtn* (cons (if
*orgtbl-lfmt* (apply (function orgtbl-apply-fmt) *orgtbl-lfmt* line) (concat
(orgtbl-eval-str *orgtbl-lstart*) (mapconcat (quote identity) line
*orgtbl-sep*) (orgtbl-eval-str *orgtbl-lend*))) *orgtbl-rtn*)))
(if (eq line (quote hline)) (if *orgtbl-hline* (setq *orgtbl-rtn* (cons
*orgtbl-hline* *orgtbl-rtn*))) (let* ((i 0) (line (mapcar (function (lambda (f)
(setq i ...) (let* ... ...))) line))) (setq *orgtbl-rtn* (cons (if
*orgtbl-lfmt* (apply (function orgtbl-apply-fmt) *orgtbl-lfmt* line) (concat
(orgtbl-eval-str *orgtbl-lstart*) (mapconcat (quote identity) line
*orgtbl-sep*) (orgtbl-eval-str *orgtbl-lend*))) *orgtbl-rtn*))))
orgtbl-format-line(3)
(if prevline (orgtbl-format-line prevline))
(while (not (eq (car *orgtbl-table*) section-stopper)) (if prevline
(orgtbl-format-line prevline)) (setq prevline (car-safe (prog1 *orgtbl-table*
(setq *orgtbl-table* (cdr *orgtbl-table*))))))
(progn (while (not (eq (car *orgtbl-table*) section-stopper)) (if prevline
(orgtbl-format-line prevline)) (setq prevline (car-safe (prog1 *orgtbl-table*
(setq *orgtbl-table* (cdr *orgtbl-table*)))))) (if prevline (let
((*orgtbl-lstart* *orgtbl-llstart*) (*orgtbl-lend* *orgtbl-llend*)
(*orgtbl-lfmt* *orgtbl-llfmt*)) (orgtbl-format-line prevline))))
(let (prevline) (progn (while (not (eq (car *orgtbl-table*) section-stopper))
(if prevline (orgtbl-format-line prevline)) (setq prevline (car-safe (prog1
*orgtbl-table* (setq *orgtbl-table* (cdr *orgtbl-table*)))))) (if prevline (let
((*orgtbl-lstart* *orgtbl-llstart*) (*orgtbl-lend* *orgtbl-llend*)
(*orgtbl-lfmt* *orgtbl-llfmt*)) (orgtbl-format-line prevline)))))
orgtbl-format-section(nil)
(let* ((splicep (plist-get params :splice)) (hline (plist-get params :hline))
(skipheadrule (plist-get params :skipheadrule)) (remove-nil-linesp (plist-get
params :remove-nil-lines)) (remove-newlines (plist-get params
:remove-newlines)) (*orgtbl-hline* hline) (*orgtbl-table* table) (*orgtbl-sep*
(plist-get params :sep)) (*orgtbl-efmt* (plist-get params :efmt))
(*orgtbl-lstart* (plist-get params :lstart)) (*orgtbl-llstart* (or (plist-get
params :llstart) *orgtbl-lstart*)) (*orgtbl-lend* (plist-get params :lend))
(*orgtbl-llend* (or (plist-get params :llend) *orgtbl-lend*)) (*orgtbl-lfmt*
(plist-get params :lfmt)) (*orgtbl-llfmt* (or (plist-get params :llfmt)
*orgtbl-lfmt*)) (*orgtbl-fmt* (plist-get params :fmt)) *orgtbl-rtn*) (if
backend (progn (setq *orgtbl-table* (mapcar (function (lambda (r) (if ... ...
r))) *orgtbl-table*)))) (if splicep nil (if (plist-member params :tstart)
(progn (let ((tstart (orgtbl-eval-str ...))) (if tstart (setq *orgtbl-rtn*
(cons tstart *orgtbl-rtn*))))))) (if (and (not splicep) (or (consp (car
*orgtbl-table*)) (consp (nth 1 *orgtbl-table*))) (memq (quote hline) (cdr
*orgtbl-table*))) (progn (if (eq (quote hline) (car *orgtbl-table*)) (progn
(and hline (setq *orgtbl-rtn* (cons hline *orgtbl-rtn*))) (car-safe (prog1
*orgtbl-table* (setq *orgtbl-table* ...))))) (let* ((*orgtbl-lstart* (or
(plist-get params :hlstart) *orgtbl-lstart*)) (*orgtbl-llstart* (or (plist-get
params :hllstart) *orgtbl-llstart*)) (*orgtbl-lend* (or (plist-get params
:hlend) *orgtbl-lend*)) (*orgtbl-llend* (or (plist-get params :hllend)
(plist-get params :hlend) *orgtbl-llend*)) (*orgtbl-lfmt* (or (plist-get params
:hlfmt) *orgtbl-lfmt*)) (*orgtbl-llfmt* (or (plist-get params :hllfmt)
(plist-get params :hlfmt) *orgtbl-llfmt*)) (*orgtbl-sep* (or (plist-get params
:hlsep) *orgtbl-sep*)) (*orgtbl-fmt* (or (plist-get params :hfmt)
*orgtbl-fmt*))) (orgtbl-format-section (quote hline))) (if (and hline (not
skipheadrule)) (setq *orgtbl-rtn* (cons hline *orgtbl-rtn*))) (car-safe (prog1
*orgtbl-table* (setq *orgtbl-table* (cdr *orgtbl-table*))))))
(orgtbl-format-section nil) (if splicep nil (if (plist-member params :tend)
(progn (let ((tend (orgtbl-eval-str ...))) (if tend (setq *orgtbl-rtn* (cons
tend *orgtbl-rtn*))))))) (mapconcat (if remove-newlines (function (lambda
(tend) (replace-regexp-in-string "[\n
\f]" "\\\\n" tend))) (quote identity)) (nreverse (if remove-nil-linesp
(remq nil *orgtbl-rtn*) *orgtbl-rtn*)) "\n"))
orgtbl-to-generic((3 2 4 4 2 1 0 2) (:sep " " :fmt
org-babel-gnuplot-quote-tsv-field (:comments . "") (:shebang . "") (:cache .
"no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports . "results")
(:results . "file replace") (:var data 3 2 4 4 2 1 0 2) (:hlines . "no")
(:session) (:file . "histogram.pdf") (:result-type . value) (:result-params
"file" "replace") (:rowname-names) (:colname-names)))
(insert (orgtbl-to-generic table (org-combine-plists (quote (:sep " " :fmt
org-babel-gnuplot-quote-tsv-field)) params)))
(save-current-buffer (set-buffer temp-buffer) (make-local-variable (quote
org-babel-gnuplot-timestamp-fmt)) (setq org-babel-gnuplot-timestamp-fmt (or
(plist-get params :timefmt) "%Y-%m-%d-%H:%M:%S")) (insert (orgtbl-to-generic
table (org-combine-plists (quote (:sep " " :fmt
org-babel-gnuplot-quote-tsv-field)) params))))
(prog1 (save-current-buffer (set-buffer temp-buffer) (make-local-variable
(quote org-babel-gnuplot-timestamp-fmt)) (setq org-babel-gnuplot-timestamp-fmt
(or (plist-get params :timefmt) "%Y-%m-%d-%H:%M:%S")) (insert
(orgtbl-to-generic table (org-combine-plists (quote (:sep " " :fmt
org-babel-gnuplot-quote-tsv-field)) params)))) (save-current-buffer (set-buffer
temp-buffer) (write-region nil nil temp-file nil 0)))
(unwind-protect (prog1 (save-current-buffer (set-buffer temp-buffer)
(make-local-variable (quote org-babel-gnuplot-timestamp-fmt)) (setq
org-babel-gnuplot-timestamp-fmt (or (plist-get params :timefmt)
"%Y-%m-%d-%H:%M:%S")) (insert (orgtbl-to-generic table (org-combine-plists
(quote (:sep " " :fmt org-babel-gnuplot-quote-tsv-field)) params))))
(save-current-buffer (set-buffer temp-buffer) (write-region nil nil temp-file
nil 0))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
(let ((temp-file data-file) (temp-buffer (get-buffer-create
(generate-new-buffer-name " *temp file*")))) (unwind-protect (prog1
(save-current-buffer (set-buffer temp-buffer) (make-local-variable (quote
org-babel-gnuplot-timestamp-fmt)) (setq org-babel-gnuplot-timestamp-fmt (or
(plist-get params :timefmt) "%Y-%m-%d-%H:%M:%S")) (insert (orgtbl-to-generic
table (org-combine-plists (quote ...) params)))) (save-current-buffer
(set-buffer temp-buffer) (write-region nil nil temp-file nil 0))) (and
(buffer-name temp-buffer) (kill-buffer temp-buffer))))
org-babel-gnuplot-table-to-data((3 2 4 4 2 1 0 2)
"/tmp/babel-31898wPP/gnuplot-31898Kkb" ((:comments . "") (:shebang . "")
(:cache . "no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports .
"results") (:results . "file replace") (:var data 3 2 4 4 2 1 0 2) (:hlines .
"no") (:session) (:file . "histogram.pdf") (:result-type . value)
(:result-params "file" "replace") (:rowname-names) (:colname-names)))
(if (listp (cdr pair)) (org-babel-gnuplot-table-to-data (cdr pair)
(org-babel-temp-file "gnuplot-") params) (cdr pair))
(cons (car pair) (if (listp (cdr pair)) (org-babel-gnuplot-table-to-data (cdr
pair) (org-babel-temp-file "gnuplot-") params) (cdr pair)))
(lambda (pair) (cons (car pair) (if (listp (cdr pair))
(org-babel-gnuplot-table-to-data (cdr pair) (org-babel-temp-file "gnuplot-")
params) (cdr pair))))((data 3 2 4 4 2 1 0 2))
mapcar((lambda (pair) (cons (car pair) (if (listp (cdr pair))
(org-babel-gnuplot-table-to-data (cdr pair) (org-babel-temp-file "gnuplot-")
params) (cdr pair)))) ((data 3 2 4 4 2 1 0 2)))
(let ((*org-babel-gnuplot-missing* (cdr (assoc :missing params)))) (mapcar
(function (lambda (pair) (cons (car pair) (if (listp (cdr pair))
(org-babel-gnuplot-table-to-data (cdr pair) (org-babel-temp-file "gnuplot-")
params) (cdr pair))))) (mapcar (function cdr) (org-babel-get-header params
:var))))
org-babel-gnuplot-process-vars(((:comments . "") (:shebang . "") (:cache .
"no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports . "results")
(:results . "file replace") (:var data 3 2 4 4 2 1 0 2) (:hlines . "no")
(:session) (:file . "histogram.pdf") (:result-type . value) (:result-params
"file" "replace") (:rowname-names) (:colname-names)))
(let* ((vars (org-babel-gnuplot-process-vars params)) (out-file (cdr (assoc
:file params))) (prologue (cdr (assoc :prologue params))) (epilogue (cdr (assoc
:epilogue params))) (term (or (cdr (assoc :term params)) (if out-file (progn
(let (...) (or ... ext)))))) (cmdline (cdr (assoc :cmdline params))) (title
(cdr (assoc :title params))) (lines (cdr (assoc :line params))) (sets (cdr
(assoc :set params))) (x-labels (cdr (assoc :xlabels params))) (y-labels (cdr
(assoc :ylabels params))) (timefmt (cdr (assoc :timefmt params))) (time-ind (or
(cdr (assoc :timeind params)) (if timefmt (progn 1)))) (add-to-body (function
(lambda (text) (setq body (concat text "\n" body))))) output) (if title (progn
(funcall add-to-body (format "set title '%s'" title)))) (if lines (progn (mapc
(function (lambda (el) (funcall add-to-body el))) lines))) (if sets (progn
(mapc (function (lambda (el) (funcall add-to-body (format "set %s" el))))
sets))) (if x-labels (progn (funcall add-to-body (format "set xtics (%s)"
(mapconcat (function (lambda ... ...)) x-labels ", "))))) (if y-labels (progn
(funcall add-to-body (format "set ytics (%s)" (mapconcat (function (lambda ...
...)) y-labels ", "))))) (if time-ind (progn (funcall add-to-body "set xdata
time") (funcall add-to-body (concat "set timefmt \"" (or timefmt
"%Y-%m-%d-%H:%M:%S") "\"")))) (if out-file (progn (funcall add-to-body (format
"set output \"%s\"" out-file)) (setq body (concat body "\nset output\n")))) (if
term (progn (funcall add-to-body (format "set term %s" term)))) (funcall
add-to-body (mapconcat (function identity)
(org-babel-variable-assignments:gnuplot params) "\n")) (mapc (function (lambda
(pair) (setq body (replace-regexp-in-string (format "\\$%s" (car pair)) (cdr
pair) body)))) vars) (if prologue (progn (funcall add-to-body prologue))) (if
epilogue (progn (setq body (concat body "\n" epilogue)))))
(progn (let* ((vars (org-babel-gnuplot-process-vars params)) (out-file (cdr
(assoc :file params))) (prologue (cdr (assoc :prologue params))) (epilogue (cdr
(assoc :epilogue params))) (term (or (cdr (assoc :term params)) (if out-file
(progn (let ... ...))))) (cmdline (cdr (assoc :cmdline params))) (title (cdr
(assoc :title params))) (lines (cdr (assoc :line params))) (sets (cdr (assoc
:set params))) (x-labels (cdr (assoc :xlabels params))) (y-labels (cdr (assoc
:ylabels params))) (timefmt (cdr (assoc :timefmt params))) (time-ind (or (cdr
(assoc :timeind params)) (if timefmt (progn 1)))) (add-to-body (function
(lambda (text) (setq body (concat text "\n" body))))) output) (if title (progn
(funcall add-to-body (format "set title '%s'" title)))) (if lines (progn (mapc
(function (lambda (el) (funcall add-to-body el))) lines))) (if sets (progn
(mapc (function (lambda (el) (funcall add-to-body ...))) sets))) (if x-labels
(progn (funcall add-to-body (format "set xtics (%s)" (mapconcat (function ...)
x-labels ", "))))) (if y-labels (progn (funcall add-to-body (format "set ytics
(%s)" (mapconcat (function ...) y-labels ", "))))) (if time-ind (progn (funcall
add-to-body "set xdata time") (funcall add-to-body (concat "set timefmt \"" (or
timefmt "%Y-%m-%d-%H:%M:%S") "\"")))) (if out-file (progn (funcall add-to-body
(format "set output \"%s\"" out-file)) (setq body (concat body "\nset
output\n")))) (if term (progn (funcall add-to-body (format "set term %s"
term)))) (funcall add-to-body (mapconcat (function identity)
(org-babel-variable-assignments:gnuplot params) "\n")) (mapc (function (lambda
(pair) (setq body (replace-regexp-in-string (format "\\$%s" ...) (cdr pair)
body)))) vars) (if prologue (progn (funcall add-to-body prologue))) (if
epilogue (progn (setq body (concat body "\n" epilogue))))) body)
(unwind-protect (progn (let* ((vars (org-babel-gnuplot-process-vars params))
(out-file (cdr (assoc :file params))) (prologue (cdr (assoc :prologue params)))
(epilogue (cdr (assoc :epilogue params))) (term (or (cdr (assoc :term params))
(if out-file (progn ...)))) (cmdline (cdr (assoc :cmdline params))) (title (cdr
(assoc :title params))) (lines (cdr (assoc :line params))) (sets (cdr (assoc
:set params))) (x-labels (cdr (assoc :xlabels params))) (y-labels (cdr (assoc
:ylabels params))) (timefmt (cdr (assoc :timefmt params))) (time-ind (or (cdr
(assoc :timeind params)) (if timefmt (progn 1)))) (add-to-body (function
(lambda (text) (setq body ...)))) output) (if title (progn (funcall add-to-body
(format "set title '%s'" title)))) (if lines (progn (mapc (function (lambda ...
...)) lines))) (if sets (progn (mapc (function (lambda ... ...)) sets))) (if
x-labels (progn (funcall add-to-body (format "set xtics (%s)" (mapconcat ...
x-labels ", "))))) (if y-labels (progn (funcall add-to-body (format "set ytics
(%s)" (mapconcat ... y-labels ", "))))) (if time-ind (progn (funcall
add-to-body "set xdata time") (funcall add-to-body (concat "set timefmt \"" (or
timefmt "%Y-%m-%d-%H:%M:%S") "\"")))) (if out-file (progn (funcall add-to-body
(format "set output \"%s\"" out-file)) (setq body (concat body "\nset
output\n")))) (if term (progn (funcall add-to-body (format "set term %s"
term)))) (funcall add-to-body (mapconcat (function identity)
(org-babel-variable-assignments:gnuplot params) "\n")) (mapc (function (lambda
(pair) (setq body (replace-regexp-in-string ... ... body)))) vars) (if prologue
(progn (funcall add-to-body prologue))) (if epilogue (progn (setq body (concat
body "\n" epilogue))))) body) (set-window-configuration wconfig))
(let ((wconfig (current-window-configuration))) (unwind-protect (progn (let*
((vars (org-babel-gnuplot-process-vars params)) (out-file (cdr (assoc :file
params))) (prologue (cdr (assoc :prologue params))) (epilogue (cdr (assoc
:epilogue params))) (term (or (cdr ...) (if out-file ...))) (cmdline (cdr
(assoc :cmdline params))) (title (cdr (assoc :title params))) (lines (cdr
(assoc :line params))) (sets (cdr (assoc :set params))) (x-labels (cdr (assoc
:xlabels params))) (y-labels (cdr (assoc :ylabels params))) (timefmt (cdr
(assoc :timefmt params))) (time-ind (or (cdr ...) (if timefmt ...)))
(add-to-body (function (lambda ... ...))) output) (if title (progn (funcall
add-to-body (format "set title '%s'" title)))) (if lines (progn (mapc (function
...) lines))) (if sets (progn (mapc (function ...) sets))) (if x-labels (progn
(funcall add-to-body (format "set xtics (%s)" ...)))) (if y-labels (progn
(funcall add-to-body (format "set ytics (%s)" ...)))) (if time-ind (progn
(funcall add-to-body "set xdata time") (funcall add-to-body (concat "set
timefmt \"" ... "\"")))) (if out-file (progn (funcall add-to-body (format "set
output \"%s\"" out-file)) (setq body (concat body "\nset output\n")))) (if term
(progn (funcall add-to-body (format "set term %s" term)))) (funcall add-to-body
(mapconcat (function identity) (org-babel-variable-assignments:gnuplot params)
"\n")) (mapc (function (lambda (pair) (setq body ...))) vars) (if prologue
(progn (funcall add-to-body prologue))) (if epilogue (progn (setq body (concat
body "\n" epilogue))))) body) (set-window-configuration wconfig)))
org-babel-expand-body:gnuplot("set xrange [-0.5:25.5]\nset yrange
[0:4.2]\nplot data with histograms notitle" ((:comments . "") (:shebang . "")
(:cache . "no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports .
"results") (:results . "file replace") (:var data 3 2 4 4 2 1 0 2) (:hlines .
"no") (:session) (:file . "histogram.pdf") (:result-type . value)
(:result-params "file" "replace") (:rowname-names) (:colname-names)))
(let ((session (cdr (assoc :session params))) (result-type (cdr (assoc
:results params))) (out-file (cdr (assoc :file params))) (body
(org-babel-expand-body:gnuplot body params)) output) (let ((wconfig
(current-window-configuration))) (unwind-protect (progn (if (string= session
"none") (let ((script-file ...)) (let (... ...) (unwind-protect ... ...))
(message "gnuplot \"%s\"" script-file) (setq output (shell-command-to-string
...)) (message output)) (let ((temp-buffer ...)) (save-current-buffer
(set-buffer temp-buffer) (unwind-protect ... ...)))) (if (member "output"
(split-string result-type)) output nil)) (set-window-configuration wconfig))))
org-babel-execute:gnuplot("set xrange [-0.5:25.5]\nset yrange [0:4.2]\nplot
data with histograms notitle" ((:comments . "") (:shebang . "") (:cache . "no")
(:padline . "") (:noweb . "no") (:tangle . "no") (:exports . "results")
(:results . "file replace") (:var data 3 2 4 4 2 1 0 2) (:hlines . "no")
(:session) (:file . "histogram.pdf") (:result-type . value) (:result-params
"file" "replace") (:rowname-names) (:colname-names)))