From: Robert Klein <roklein@roklein.de>
To: emacs-orgmode@gnu.org
Subject: BUG: org-table: table option “:missing” not working (in ob-gnuplot.el)
Date: Thu, 17 Jun 2021 21:13:47 +0200 [thread overview]
Message-ID: <20210617211347.59e4de56@happy.intern.roklein.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 1840 bytes --]
Hi everyone,
a bug report:
Emacs : GNU Emacs 27.2 (build 1, x86_64-unknown-openbsd, GTK+ Version 2.24.33)
of 2021-04-20
Package: Org mode version 9.4.6 (release_9.4.6-4-g093c94 @ /home/roklein/.emacs.d/org-mode/lisp/)
When trying to run a table with missing values with ob-gnuplot.el
there's a “:missing value” option. ob-gnuplot is supposed to put the
“value” into the place of empty cell values before calling on gnuplot.
It doesn't do this currently. Bi-secting suggests,
“9209aa3c9d456bcfdd9d8cd223367f7cfb6b3231 is the first bad commit”:
-- commit 9209aa3c9d456bcfdd9d8cd223367f7cfb6b3231
-- Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
-- -- Sun Aug 24 01:31:56 2014 +0200
--
-- org-table: Use "ox.el" internally for radio tables
By my reading:
- in ob-gnuplot.el:org-babel-gnuplot-process-vars :missing variable is
read, used in
- ob-gnuplot.el:org-babel-gnuplot-quote-tsv-field, called from
- ob-gnuplot.el:org-babel-gnuplot-table-to-data
- used in org-table.el:orgtbl-to-generic (as (part of the) :fmt param)
- which calls org-table--to-generic-cell
- which calle org-table.el:org-table--generic-apply
- which I don't understand
my dotemacs and a sample org file are attached.
When running the code (e.g. C-c C-c on the #+Call: line), temporary
files are created in /tmp/babel-<random>/gnuplot<other-random>.
These files should have "?" (as choosen :missing). In the current
version there is nothing, so gnuplot uses up the values in the following
columns and the resulting graph is wrong.
Also, I couldn't find this in the manual, but there's a thread “using
gnuplot's "splot" and "every" comma nds on org-mode table” on the
mailing list (2013/09/23 - 3013/09/25) about the :missing feature.
Thanks for any help.
Best regards
Robert
[-- Attachment #2: gp.org --]
[-- Type: application/octet-stream, Size: 8311 bytes --]
# -*- fill-column: 72; coding: utf-8-unix; -*-
#+call: create_health_monitor_plot2()
#+RESULTS:
: nil
* blood pressure 2021
#+Name: bdq2_21
| Datum | sys. | dia. | pul. | sys.2 | dia.2 | pul.2 | 5ds | 5dd | 5ds2 | 5dd2 |
|-------+------+------+------+-------+-------+-------+--------+-------+--------+-------|
| 23.3. | | | | 121 | 79 | 80 | 120.50 | 79.50 | 120.00 | 80.00 |
| 24.3. | 120 | 80 | 60 | 120 | 80 | 80 | 121.00 | 79.00 | 119.50 | 80.50 |
| 25.3. | 121 | 79 | 60 | 119 | 81 | 80 | 121.50 | 78.50 | 119.00 | 81.00 |
| 26.3. | 122 | 78 | 60 | 118 | 82 | 80 | 122.00 | 78.00 | 118.00 | 82.00 |
| 27.3. | 123 | 77 | 60 | 117 | 83 | 80 | 122.60 | 77.40 | 117.40 | 82.60 |
| 28.3. | 124 | 76 | 60 | 116 | 84 | 80 | 122.80 | 77.20 | 117.20 | 82.80 |
| 29.3. | 123 | 77 | 60 | 117 | 83 | 80 | 122.60 | 77.40 | 117.40 | 82.60 |
| 30.3. | 122 | 78 | 60 | 118 | 82 | 80 | 122.00 | 78.00 | 118.00 | 82.00 |
| 31.3. | 121 | 79 | 60 | 119 | 81 | 80 | 121.40 | 78.60 | 118.60 | 81.40 |
| 1.4. | 120 | 80 | 60 | 120 | 80 | 80 | 121.20 | 78.80 | 118.80 | 81.20 |
| 2.4. | 121 | 79 | 60 | 119 | 81 | 80 | 121.40 | 78.60 | 118.60 | 81.40 |
| 3.4. | 122 | 78 | 60 | 118 | 82 | 80 | 122.00 | 78.00 | 118.00 | 82.00 |
| 4.4. | 123 | 77 | 60 | 117 | 83 | 80 | 122.60 | 77.40 | 117.40 | 82.60 |
| 5.4. | 124 | 76 | 60 | 116 | 84 | 80 | 122.80 | 77.20 | 117.20 | 82.80 |
| 6.4. | 123 | 77 | 60 | 117 | 83 | 80 | 122.60 | 77.40 | 117.40 | 82.60 |
| 7.4. | 122 | 78 | 60 | 118 | 82 | 80 | 122.00 | 78.00 | 118.00 | 82.00 |
| 8.4. | 121 | 79 | 60 | 119 | 81 | 80 | 121.40 | 78.60 | 118.60 | 81.40 |
| 9.4. | 120 | 80 | 60 | 120 | 80 | 80 | 121.20 | 78.80 | 119.00 | 81.00 |
| 10.4. | 121 | 79 | 60 | 119 | 81 | 80 | 121.40 | 78.60 | 118.75 | 81.25 |
| 11.4. | 122 | 78 | 60 | | | | 122.00 | 78.00 | 118.00 | 82.00 |
| 12.4. | 123 | 77 | 60 | 117 | 83 | 80 | 122.60 | 77.40 | 117.25 | 82.75 |
| 13.4. | 124 | 76 | 60 | 116 | 84 | 80 | 122.80 | 77.20 | 117.25 | 83.00 |
| 14.4. | 123 | 77 | 60 | 117 | 83 | 80 | 122.60 | 77.40 | 117.25 | 83.00 |
| 15.4. | 122 | 78 | 60 | 119 | 82 | 80 | 122.00 | 78.00 | 118.00 | 82.25 |
| 16.4. | 121 | 79 | 60 | | | | 121.50 | 78.50 | 118.67 | 81.67 |
| 17.4. | 120 | 80 | 60 | 120 | 80 | 80 | 121.00 | 79.00 | 119.50 | 81.00 |
#+TBLFM: @>$9=if("@-2$2..@>$3" == "[]", string(""), vmean(@-2$3..@>$3));%.2f::@>>$9=if("@-2$3..@+1$3" == "[]", string(""), vmean(@-2$3..@+1$3));%.2f::@>$8=if("@-2$2..@>$2" == "[]", string(""), vmean(@-2$2..@>$2));%.2f::@>>$8=if("@-2$2..@+1$2" == "[]", string(""), vmean(@-2$2..@+1$2));%.2f::@>$10=if("@-2$5..@>$5" == "[]", string(""), vmean(@-2$5..@>$5));%.2f::@>>$10=if("@-2$5..@+1$5" == "[]", string(""), vmean(@-2$5..@+1$5));%.2f::@>$11=if("@-2$6..@>$6" == "[]", string(""), vmean(@-2$6..@>$6));%.2f::@>>$11=if("@-2$6..@+1$6" == "[]", string(""), vmean(@-2$6..@+1$6));%.2f::@2$8=if("@2$2..@+2$2" == "[]", string(""), vmean(@2$2..@+2$2));%.2f::@2$9=if("@2$3..@+2$3" == "[]", string(""), vmean(@2$3..@+2$3));%.2f::@2$10=if("@2$5..@+2$5" == "[]", string(""), vmean(@2$5..@+2$5));%.2f::@2$11=if("@2$6..@+2$6" == "[]", string(""), vmean(@2$6..@+2$6));%.2f::@3$8=if("@-1$2..@+2$2" == "[]", string(""), vmean(@-1$2..@+2$2));%.2f::@3$9=if("@-1$3..@+2$3" == "[]", string(""), vmean(@-1$3..@+2$3));%.2f::@3$10=if("@-1$5..@+2$5" == "[]", string(""), vmean(@-1$5..@+2$5));%.2f::@3$11=if("@-1$6..@+2$6" == "[]", string(""), vmean(@-1$6..@+2$6));%.2f::@4$8..@>>>$8=if("@-2$2..@+2$2" == "[]", string(""), vmean(@-2$2..@+2$2));%.2f::@4$9..@>>>$9=if("@-2$3..@+2$3" == "[]", string(""), vmean(@-2$3..@+2$3));%.2f::@4$10..@>>>$10=if("@-2$5..@+2$5" == "[]", string(""), vmean(@-2$5..@+2$5));%.2f::@4$11..@>>>$11=if("@-2$6..@+2$6" == "[]", string(""), vmean(@-2$6..@+2$6));%.2f
#+name: create_health_monitor_plot2
#+BEGIN_SRC gnuplot "," :missing "?" :var data=bdq2_21 :results silent
set terminal png
# get stats data
stats data
set terminal png enhanced giant size 1280,768
set output 'q2-1.png'
## Define X Axis
# globally set the time format for input data
set timefmt "%d.%m."
# X coordinates represent time values (here: date)
set xdata time
# set format of X axis labels to "%d."
set xtics timedate format "%d.%m."
# no minor tics on X Axis
#unset mxtics
set mxtics 14
# don't extend x-axis beyond x values in data
set autoscale noextend
## Define Y axis
# Tics and microtics, so each integer y value gets a (micro)tic
set ytics 10 out nomirror
set mytics 10
set yrange [60:200]
set ylabel "blood pressure (mmHg)"
# labeled tics also on the right
set y2tics 10 out
set mytics 10
## Tics on both Axis outward
set grid xtics ytics front
# missing data
set datafile missing "?"
# set style fill transparent solid 0.50 noborder
# plot "~/mm.txt" u 1:3 axes x1y1 title "mg/dL"
## colors
# darkred: 8b0000
# firebrick: b22222
# crimson: dc143c
# coral: ff7f50
# peachpuff: ffdab9
# palegoldenrod: eee8aa
# palegreen: 98fb98
plot \
400 axes x1y1 with filledcurves y2=180 fc "#b22222" notitle, \
180 axes x1y1 with filledcurves y2=160 fc "#dc143c" notitle, \
160 axes x1y1 with filledcurves y2=140 fc "#ff7f50" notitle, \
140 axes x1y1 with filledcurves y2=130 fc "#ffdab9" notitle, \
130 axes x1y1 with filledcurves y2=120 fc "#eee8aa" notitle, \
120 axes x1y1 with filledcurves y2=105 fc "#98fb98" notitle, \
105 axes x1y1 with filledcurves y2=100 fc "#dc143c" notitle, \
\
100 axes x1y1 with filledcurves y2=90 fc "#ff7f50" notitle, \
90 axes x1y1 with filledcurves y2=85 fc "#ffdab9" notitle, \
85 axes x1y1 with filledcurves y2=80 fc "#eee8aa" notitle, \
80 axes x1y1 with filledcurves y2=65 fc "#98fb98" notitle, \
60 axes x1y1 with filledcurves y2=65 fc "#dc143c" notitle, \
data u 1:2 axes x1y1 with lines lc "dark-green" lw 2 title "syst. blood pressure (am)", \
data every ::0::1 u 1:8 axes x1y1 \
with lines lc "gray" lw 1 notitle, \
data every ::1::2 u 1:8 axes x1y1 \
with lines lc "gray60" lw 1 notitle, \
data every ::2::STATS_records-3 u 1:8 axes x1y1 \
with lines lc "gray30" lw 1 title "5-day moving syst.", \
data every ::STATS_records-3::STATS_records-2 u 1:8 axes x1y1 \
with lines lc "gray60" lw 1 notitle, \
data every ::STATS_records-2::STATS_records-1 u 1:8 axes x1y1 \
with lines lc "gray" lw 1 notitle, \
\
data u 1:3 axes x1y1 with lines lc "dark-blue" lw 2 title "diast. blood pressure (am)", \
data every ::0::1 u 1:9 axes x1y1 \
with lines lc "gray" lw 1 notitle, \
data every ::1::2 u 1:9 axes x1y1 \
with lines lc "gray60" lw 1 notitle, \
data every ::2::STATS_records-3 u 1:9 axes x1y1 \
with lines lc "gray30" lw 1 title "5-day moving diast.", \
data every ::STATS_records-3::STATS_records-2 u 1:9 axes x1y1 \
with lines lc "gray60" lw 1 notitle, \
data every ::STATS_records-2::STATS_records-1 u 1:9 axes x1y1 \
with lines lc "gray" lw 1 notitle, \
\
data u 1:($5) axes x1y1 with lines lc "green" lw 2 title "syst. blood pressure (pm)", \
\
data u 1:($6) axes x1y1 with lines lc "blue" lw 2 title "diast. blood pressure (pm)", \
\
# data every ::0::1 u 1:2 axes x1y1 \
# with lines lc "gray" lw 1 notitle, \
# data every ::1::2 u 1:2 axes x1y1 \
# with lines lc "gray60" lw 1 notitle, \
# data every ::2::STATS_records-3 u 1:2 axes x1y1 \
# with lines lc "gray30" lw 1 title "5-day moving syst.", \
quit
#+END_SRC
#+Results: create_health_monitor_plot2
[-- Attachment #3: dotemacs --]
[-- Type: application/octet-stream, Size: 1180 bytes --]
;; -*- lisp-mode:t; -*-
;; get rid of C-z
;;(unbind-key "C-z")
(global-unset-key (kbd "C-z"))
;; no startup message
(setq inhibit-startup-message t)
;; no toolbar
(if (not (equal system-configuration "aarch64-unknown-linux-android"))
(tool-bar-mode -1))
;; I'm feeling religious about this:
(setq-default indent-tabs-mode nil)
;; changed my mind back.
;; (setq-default indent-tabs-mode t)
;; ask y or n instead of yes or no
(fset 'yes-or-no-p 'y-or-n-p)
;; my ears hurt. Especially when wearing headphones
(setq visible-bell t)
;; color-theme
(setq-default custom-enabled-themes (quote (adwaita)))
(load-theme 'adwaita)
(setq load-path (cons "~/gp/org-mode/lisp" load-path))
(add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
(add-hook 'org-mode-hook (lambda () (electric-indent-local-mode -1)))
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(gnuplot . t)))
(add-to-list 'load-path
(expand-file-name "~/gp/gnuplot-0.8.0"))
;; autoload gnuplot-mode
;(autoload 'gnuplot-mode "gnuplot" "gnuplot major mode" t)
;(autoload 'gnuplot-make-buffer "gnuplot" "open a buffer in gnuplot-mode" t)
next reply other threads:[~2021-06-17 19:24 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-17 19:13 Robert Klein [this message]
2021-09-30 13:03 ` BUG: org-table: table option “:missing” not working (in ob-gnuplot.el) Ihor Radchenko
2021-09-30 23:48 ` Nicolas Goaziou
2021-10-01 3:56 ` Ihor Radchenko
2021-10-01 7:47 ` Nicolas Goaziou
2021-10-01 9:15 ` Ihor Radchenko
2021-10-01 3:50 ` Ihor Radchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210617211347.59e4de56@happy.intern.roklein.de \
--to=roklein@roklein.de \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).