From: Visuwesh <visuweshm@gmail.com>
To: emacs-orgmode@gnu.org
Subject: [BUG] org-plot: Unable to use text xtics with type:2d (+ more) [9.7-pre (N/A @ /home/viz/lib/emacs/straight/build/org/)]
Date: Fri, 24 May 2024 16:48:35 +0530 [thread overview]
Message-ID: <87cypbjw50.fsf@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 3439 bytes --]
Remember to cover the basics, that is, what you expected to happen and
what in fact did happen. You don't know how to make a good report? See
https://orgmode.org/manual/Feedback.html#Feedback
Your bug report will be posted to the Org mailing list.
------------------------------------------------------------------------
Consider the following table, and try to execute the PLOT line
#+PLOT: ind:1 deps:(3) type:2d with:lp
| Sede | Max cites | H-index |
|-----------+-----------+---------|
| Chile | 257.72 | 21.39 |
| Leeds | 165.77 | 19.68 |
| Sao Paolo | 71.00 | 11.50 |
| Stockholm | 134.19 | 14.33 |
| Morelia | 257.56 | 17.67 |
and watch it fail (see the error message in the *gnuplot* buffer).
Although the 2d option in org-plot/preset-plot-types has :check-ind-type
set to a non-nil value, org-plot/gnuplot does not check the value of
:check-ind-type assigned in the 2d type given in the user-option.
Unless I misunderstood the code, the line
;; Check type of ind column (timestamp? text?)
(when (plist-get params :check-ind-type)
should be
;; Check type of ind column (timestamp? text?)
(when (plist-get (cdr type) :check-ind-type)
because (1) org-plot/collect-options only adds a select number of
keywords to the plist and :check-ind-type is not a part of the select
members, and (2) org-plot/gnuplot is never called with a non-nil value
for the optional argument PARAMS in tree.
BTW, the earlier check in the function for :data-dump should also fail
because
(plist-get (assoc 'grid org-plot/preset-plot-types) :data-dump) ;; => nil
but
(plist-get (cdr (assoc 'grid org-plot/preset-plot-types)) :data-dump) ;; => non-nil
where type ≡ (assoc 'grid org-plot/preset-plot-types) in
org-plot/gnuplot.
[ I cannot reproduce the grid example in worg's org-plot.org file, but
even with the fix, I cannot reproduce it; more below. ]
The other code smell I see is that the function checks for the PLOT line
twice. Once near the beginning of the function, and once just after the
cleaning up of hline. Is this simply an oversight?
Coming to the grid example, the doc-string of org-plot/preset-plot-types
options says:
- :data-dump - Function to dump the table to a datafile for ease of
use.
Accepts lambda function. Default lambda body:
(org-plot/gnuplot-to-data table data-file params)
but in fact, org-plot/gnuplot passes one more argument to the :data-dump
function:
;; Dump table to datafile
(let ((dump-func (plist-get type :data-dump)))
(if dump-func
(funcall dump-func table data-file num-cols params)
(org-plot/gnuplot-to-data table data-file params)))
but here's the catch: the :data-dump function in the grid option expects
the order
(lambda (table data-file params _num-cols)
which breaks things down the line. What should be the actual order
here? I looked at the history of those lines briefly using C-x v h but
I don't have the time to look into it properly to decide on the actual
argument order.
For now, I have attached a patch that fixes all the issues. With the
patch, i can run the example covered in the bug report. The grid
example given in worg passes but it doesn't look as expected. I am not
sure what to blame here.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: org-plot-fix.diff --]
[-- Type: text/x-diff, Size: 1505 bytes --]
diff --git a/lisp/org-plot.el b/lisp/org-plot.el
index 283d993..3be1b2f 100644
--- a/lisp/org-plot.el
+++ b/lisp/org-plot.el
@@ -679,8 +679,8 @@ (defun org-plot/gnuplot (&optional params)
tbl))
(num-cols (length (if (eq (nth 0 table) 'hline) (nth 1 table)
(nth 0 table))))
- (type (assoc (plist-get params :plot-type)
- org-plot/preset-plot-types))
+ (type (cdr (assoc (plist-get params :plot-type)
+ org-plot/preset-plot-types)))
gnuplot-script)
(unless type
@@ -691,17 +691,13 @@ (defun org-plot/gnuplot (&optional params)
(setf params
(plist-put params :labels (car table))) ; headers to labels
(setf table (delq 'hline (cdr table)))) ; clean non-data from table
- ;; Collect options.
- (save-excursion (while (and (equal 0 (forward-line -1))
- (looking-at "[[:space:]]*#\\+"))
- (setf params (org-plot/collect-options params))))
;; Dump table to datafile
(let ((dump-func (plist-get type :data-dump)))
(if dump-func
- (funcall dump-func table data-file num-cols params)
+ (funcall dump-func table data-file params num-cols)
(org-plot/gnuplot-to-data table data-file params)))
;; Check type of ind column (timestamp? text?)
- (when (plist-get params :check-ind-type)
+ (when (plist-get type :check-ind-type)
(let* ((ind (1- (plist-get params :ind)))
(ind-column (mapcar (lambda (row) (nth ind row)) table)))
(cond ((< ind 0) nil) ; ind is implicit
[-- Attachment #3: Type: text/plain, Size: 206 bytes --]
Emacs : GNU Emacs 30.0.50 (build 8, x86_64-pc-linux-gnu, X toolkit, cairo version 1.18.0, Xaw scroll bars)
of 2024-05-07
Package: Org mode version 9.7-pre (N/A @ /home/viz/lib/emacs/straight/build/org/)
next reply other threads:[~2024-05-24 11:19 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-24 11:18 Visuwesh [this message]
2024-05-24 12:21 ` [BUG] org-plot: Unable to use text xtics with type:2d (+ more) [9.7-pre (N/A @ /home/viz/lib/emacs/straight/build/org/)] Ihor Radchenko
2024-05-24 17:19 ` Visuwesh
2024-06-11 5:41 ` Visuwesh
2024-06-12 12:41 ` Ihor Radchenko
2024-06-13 7:04 ` Visuwesh
2024-06-13 7:18 ` Visuwesh
2024-06-15 9:51 ` Ihor Radchenko
2024-06-17 5:06 ` Visuwesh
2024-06-17 17:13 ` Ihor Radchenko
2024-06-18 5:10 ` Visuwesh
2024-06-18 14:29 ` 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=87cypbjw50.fsf@gmail.com \
--to=visuweshm@gmail.com \
--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).