Function: org-plot/gnuplot-to-grid-data
org-plot/gnuplot-to-grid-data is an interactive and byte-compiled
function defined in org-plot.el.gz.
Signature
(org-plot/gnuplot-to-grid-data TABLE DATA-FILE PARAMS)
Documentation
Export the data in TABLE to DATA-FILE for gnuplot.
This means in a format appropriate for grid plotting by gnuplot. PARAMS specifies which columns of TABLE should be plotted as independent and dependent variables.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-plot.el.gz
(defun org-plot/gnuplot-to-grid-data (table data-file params)
"Export the data in TABLE to DATA-FILE for gnuplot.
This means in a format appropriate for grid plotting by gnuplot.
PARAMS specifies which columns of TABLE should be plotted as independent
and dependent variables."
(interactive)
(let* ((ind (- (plist-get params :ind) 1))
(deps (if (plist-member params :deps)
(mapcar (lambda (val) (- val 1)) (plist-get params :deps))
(let (collector)
(dotimes (col (length (nth 0 table)))
(setf collector (cons col collector)))
collector)))
(counter 0)
row-vals)
(when (>= ind 0) ;; collect values of ind col
(setf row-vals (mapcar (lambda (row) (setf counter (+ 1 counter))
(cons counter (nth ind row)))
table)))
(when (or deps (>= ind 0)) ;; remove non-plotting columns
(setf deps (delq ind deps))
(setf table (mapcar (lambda (row)
(dotimes (col (length row))
(unless (memq col deps)
(setf (nth col row) nil)))
(delq nil row))
table)))
;; write table to gnuplot grid datafile format
(with-temp-file data-file
(let ((num-rows (length table)) (num-cols (length (nth 0 table)))
(gnuplot-row (lambda (col row value)
(setf col (+ 1 col)) (setf row (+ 1 row))
(format "%f %f %f\n%f %f %f\n"
col (- row 0.5) value ;; lower edge
col (+ row 0.5) value))) ;; upper edge
front-edge back-edge)
(dotimes (col num-cols)
(dotimes (row num-rows)
(setf back-edge
(concat back-edge
(funcall gnuplot-row (- col 1) row
(string-to-number (nth col (nth row table))))))
(setf front-edge
(concat front-edge
(funcall gnuplot-row col row
(string-to-number (nth col (nth row table)))))))
;; only insert once per row
(insert back-edge) (insert "\n") ;; back edge
(insert front-edge) (insert "\n") ;; front edge
(setf back-edge "") (setf front-edge ""))))
row-vals))