From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id jW38FiYD418cVwAA0tVLHw (envelope-from ) for ; Wed, 23 Dec 2020 08:43:18 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id KLN2EiYD41/+PQAAB5/wlQ (envelope-from ) for ; Wed, 23 Dec 2020 08:43:18 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 285AD940222 for ; Wed, 23 Dec 2020 08:43:17 +0000 (UTC) Received: from localhost ([::1]:53630 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1krzjn-0005KX-1m for larch@yhetil.org; Wed, 23 Dec 2020 03:43:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38838) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1krziy-0005KQ-9R for emacs-orgmode@gnu.org; Wed, 23 Dec 2020 03:42:24 -0500 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:34625) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1krziw-0005m7-6J; Wed, 23 Dec 2020 03:42:24 -0500 Received: by mail-pf1-x430.google.com with SMTP id w6so10002131pfu.1; Wed, 23 Dec 2020 00:42:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:date:in-reply-to :message-id:mime-version; bh=VlmoTPiw5Wce9I8WXeXW6rFWrDWYZMKAhBivRc+3jDk=; b=KJEyrZeXP/pc40VmLjlSMRLjR5WRsUebSG3QRpPuVaI8HaXMHP/s8Ow4Ytt3kU9vjH ha9YtxQUb7xsGoNlmE4OPXoTZF4O3PNnpoRplS8bzLqk4k9bjOrxPz0FvRlUrbhEU1QK l/PeV4OP0gF1/1CnnVsxHj7BfQaoyI5TPrB3kEF2JmJAjdB4ji0sx1635MBpyCRyUkUn RttJggVec82SFxlKEQcozi7Hx5zRxUX2YcrYUjl9GBX2ufJtiwjHtWCgynorDH2UvgT9 SBhJJX0SBYxF1+GJf0gsebs/P9tjXlgIK5Wcg+qeyGWkCoaTp+tJr2FYqv6xbwRi+xUD +4ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject:date :in-reply-to:message-id:mime-version; bh=VlmoTPiw5Wce9I8WXeXW6rFWrDWYZMKAhBivRc+3jDk=; b=bTn/xIWn0Zi3DatTKaz7AoAT2ToJTeRLJ9SoPg9VvLzOTjcFY1Lx1mqNqRqk/BmX5A bOgX08qPM9arRqVAX+LyBtcFBedtmY4SP0NNGVUHzOe8Y2Q3kNQRg0dS/YUDfxnPfDo2 gTKLdLEsvEC1Tw2E6FtcIpgA2Ot8JBIy5RiUNIrF5FqdAhuxtvHOu+hBybDlN974fyu8 P152eYmoinV3e9T++zBcGJYlSCqAOOEK2Fj4knBjUWEU2LeZA/xlULpQQmNupHl8Cie2 J4KB13eIFqOEWkNB9iulSB8d4tMpOjXD9p/car+k6wZlPcOD91IuCtmzuH4C36pX8y3A MIjA== X-Gm-Message-State: AOAM531lq17zFay5qJhSgUDI3Lw2lJ+w7yooQP+gAKZHcfQYGaacb7PJ TpxO/hR1WwZYNDFDPOwDnXY= X-Google-Smtp-Source: ABdhPJxhp5szgVv6Z/PllULbJSpk1PqkMf2uZxVC4JBQ7LJXade1MYGkIJ39piEARQB4nwaJvVeAzw== X-Received: by 2002:aa7:8486:0:b029:19e:307f:2941 with SMTP id u6-20020aa784860000b029019e307f2941mr3179049pfn.26.1608712940203; Wed, 23 Dec 2020 00:42:20 -0800 (PST) Received: from localhost (180-150-91-8.b4965b.per.nbn.aussiebb.net. [180.150.91.8]) by smtp.gmail.com with ESMTPSA id u6sm23649272pgj.37.2020.12.23.00.42.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Dec 2020 00:42:19 -0800 (PST) References: <87imcrfntf.fsf@gmail.com> <87blijmnv9.fsf@gnu.org> <87lfhbhfhe.fsf@gmail.com> <87r1qp3fu1.fsf@gmail.com> <871rhxd2ib.fsf@gmail.com> <87r1pnoo5y.fsf@bzg.fr> <87lffv8oy5.fsf@gmail.com> <87zh2hosex.fsf@bzg.fr> <87im8tglbl.fsf@kyleam.com> <87zh25t8cj.fsf@gmail.com> <87y2hpt568.fsf@gmail.com> <87czz1gfje.fsf@kyleam.com> User-agent: mu4e 1.4.13; emacs 27.1 From: TEC To: Kyle Meyer Subject: Re: [PATCH] org-plot abstractions and extension Date: Wed, 23 Dec 2020 16:38:24 +0800 In-reply-to: <87czz1gfje.fsf@kyleam.com> Message-ID: <87wnx8ud5k.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=tecosaur@gmail.com; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bastien , org-mode-email Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -4.00 Authentication-Results: aspmx1.migadu.com; none X-Migadu-Queue-Id: 285AD940222 X-Spam-Score: -4.00 X-Migadu-Scanner: scn0.migadu.com X-TUID: Rtk4KHc5zDW1 --=-=-= Content-Type: text/plain Kyle Meyer writes: > case is still available under the cl- prefix. If you wanted to use it > in 73c99bf42 (org-plot.el: add utility functions for range,ticks), I > don't see a reason not to use it now. I tend to use pcase over cl-case (since it's completely built in, i.e. no (require 'cl-lib) required). I'm not sure if there's any argument for cl-case over pcase, let me know if so. > s/refence/reference/ Done >> @@ -210,9 +210,9 @@ values, namely regarding the range." >> "From a the values in a TABLE of data, attempt to guess an appropriate number of ticks." >> (let* ((row-data >> (mapcar (lambda (row) (org--plot/values-stats >> - (mapcar #'string-to-number (cdr row)) >> - hard-min >> - hard-max)) table)) >> + (mapcar #'string-to-number (cdr row)) >> + hard-min >> + hard-max)) table)) > > Please drop this unrelated space change. Erm, this isn't unrelated. As the function being called changed length, the indentation of the arguments is thus also changed. > The mapcar is unnecessary; you can reposition (lambda ...) as > mapconcat's FUNCTION argument. Thanks for spotting that. Resolved. Updated patch attached. Let me know how it looks to you :) -- Timothy --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-org-plot.el-fix-compiler-warnings.patch >From 22717d0750e2c001003b45f1d4834571f21287ef Mon Sep 17 00:00:00 2001 From: TEC Date: Wed, 23 Dec 2020 14:13:24 +0800 Subject: [PATCH] org-plot.el: fix compiler warnings * (org--plot/values-stats): Replace `log10' with `log'. (org--plot/nice-frequency-pick): Replace obsolete `case' with `pcase`. (org--plot/radar): Replace `s-join' with `mapconcat', removing the implicit dependency on s.el. (org-plot/gnuplot-script): Remove unused let bindings. (org-plot/gnuplot-script): Replace free variable reference with expression only using given variables. --- lisp/org-plot.el | 115 +++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 60 deletions(-) diff --git a/lisp/org-plot.el b/lisp/org-plot.el index 4aa8276..1c7ee43 100644 --- a/lisp/org-plot.el +++ b/lisp/org-plot.el @@ -196,7 +196,7 @@ values, namely regarding the range." (maximum (or hard-max (apply #'max nums))) (range (- maximum minimum)) (rangeOrder (if (= range 0) 0 - (ceiling (- 1 (log10 range))))) + (ceiling (- 1 (log range 10))))) (range-factor (expt 10 rangeOrder)) (nice-min (if (= range 0) (car nums) (/ (float (floor (* minimum range-factor))) range-factor))) @@ -210,9 +210,9 @@ values, namely regarding the range." "From a the values in a TABLE of data, attempt to guess an appropriate number of ticks." (let* ((row-data (mapcar (lambda (row) (org--plot/values-stats - (mapcar #'string-to-number (cdr row)) - hard-min - hard-max)) table)) + (mapcar #'string-to-number (cdr row)) + hard-min + hard-max)) table)) (row-normalised-ranges (mapcar (lambda (r-data) (let ((val (round (* (plist-get r-data :range-factor) @@ -229,34 +229,34 @@ values, namely regarding the range." (defun org--plot/nice-frequency-pick (frequencies) "From a list of frequences, try to sensibly pick a sample of the most frequent." ;; TODO this mosly works decently, but counld do with some tweaking to work more consistently. - (case (length frequencies) - (1 (list (car (nth 0 frequencies)))) - (2 (if (<= 3 (/ (cdr (nth 0 frequencies)) - (cdr (nth 1 frequencies)))) - (make-list 2 - (car (nth 0 frequencies))) - (list (car (nth 0 frequencies)) - (car (nth 1 frequencies))))) - (t - (let* ((total-count (apply #'+ (mapcar #'cdr frequencies))) - (n-freq (mapcar (lambda (freq) `(,(car freq) . ,(/ (float (cdr freq)) total-count))) frequencies)) - (f-pick (list (car (car n-freq)))) - (1-2-ratio (/ (cdr (nth 0 n-freq)) - (cdr (nth 1 n-freq)))) - (2-3-ratio (/ (cdr (nth 1 n-freq)) - (cdr (nth 2 n-freq)))) - (1-3-ratio (* 1-2-ratio 2-3-ratio)) - (1-val (car (nth 0 n-freq))) - (2-val (car (nth 1 n-freq))) - (3-val (car (nth 2 n-freq)))) - (when (> 1-2-ratio 4) (push 1-val f-pick)) - (when (and (< 1-2-ratio 2-val) - (< (* (apply #'* f-pick) 2-val) 30)) - (push 2-val f-pick)) - (when (and (< 1-3-ratio 3-val) - (< (* (apply #'* f-pick) 3-val) 30)) - (push 3-val f-pick)) - f-pick)))) + (pcase (length frequencies) + (1 (list (car (nth 0 frequencies)))) + (2 (if (<= 3 (/ (cdr (nth 0 frequencies)) + (cdr (nth 1 frequencies)))) + (make-list 2 + (car (nth 0 frequencies))) + (list (car (nth 0 frequencies)) + (car (nth 1 frequencies))))) + (_ + (let* ((total-count (apply #'+ (mapcar #'cdr frequencies))) + (n-freq (mapcar (lambda (freq) `(,(car freq) . ,(/ (float (cdr freq)) total-count))) frequencies)) + (f-pick (list (car (car n-freq)))) + (1-2-ratio (/ (cdr (nth 0 n-freq)) + (cdr (nth 1 n-freq)))) + (2-3-ratio (/ (cdr (nth 1 n-freq)) + (cdr (nth 2 n-freq)))) + (1-3-ratio (* 1-2-ratio 2-3-ratio)) + (1-val (car (nth 0 n-freq))) + (2-val (car (nth 1 n-freq))) + (3-val (car (nth 2 n-freq)))) + (when (> 1-2-ratio 4) (push 1-val f-pick)) + (when (and (< 1-2-ratio 2-val) + (< (* (apply #'* f-pick) 2-val) 30)) + (push 2-val f-pick)) + (when (and (< 1-3-ratio 3-val) + (< (* (apply #'* f-pick) 3-val) 30)) + (push 3-val f-pick)) + f-pick)))) (defun org--plot/merge-alists (function default alist1 alist2 &rest alists) "Using FUNCTION, combine the elements of all given ALISTS. When an element is @@ -473,34 +473,34 @@ EOD (defun org--plot/radar (table params) (let* ((data - (concat "\"" (s-join "\" \"" (plist-get params :labels)) "\"" + (concat "\"" (mapconcat #'identity (plist-get params :labels) "\" \"") "\"" "\n" - (s-join "\n" - (mapcar (lambda (row) - (format - "\"%s\" %s" - (car row) - (s-join " " (cdr row)))) - (append table (list (car table))))))) + (mapconcat (lambda (row) + (format + "\"%s\" %s" + (car row) + (mapconcat #'identity (cdr row) " "))) + (append table (list (car table))) + "\n"))) (ticks (or (plist-get params :ticks) (org--plot/sensible-tick-num table (plist-get params :ymin) (plist-get params :ymax)))) (settings - (s-join "\n" - (mapcar (lambda (row) - (let ((data (org--plot/values-stats - (mapcar #'string-to-number (cdr row))))) - (format - "\"%s\" %s %s %s" - (car row) - (or (plist-get params :ymin) - (plist-get data :nice-min)) - (or (plist-get params :ymax) - (plist-get data :nice-max)) - (if (eq ticks 0) 2 ticks) - ))) - (append table (list (car table)))))) + (mapconcat (lambda (row) + (let ((data (org--plot/values-stats + (mapcar #'string-to-number (cdr row))))) + (format + "\"%s\" %s %s %s" + (car row) + (or (plist-get params :ymin) + (plist-get data :nice-min)) + (or (plist-get params :ymax) + (plist-get data :nice-max)) + (if (eq ticks 0) 2 ticks) + ))) + (append table (list (car table))) + "\n")) (setup-file (make-temp-file "org-plot-setup"))) (let ((coding-system-for-write 'utf-8)) (write-region (format org--plot/radar-setup-template data settings) nil setup-file nil :silent)) @@ -533,15 +533,10 @@ manner suitable for prepending to a user-specified script." (user-error "Org-plot type `%s' is undefined." type-name)) (let* ((sets (plist-get params :set)) (lines (plist-get params :line)) - (map (plist-get params :map)) (title (plist-get params :title)) (file (plist-get params :file)) - (ind (plist-get params :ind)) (time-ind (plist-get params :timeind)) (timefmt (plist-get params :timefmt)) - (text-ind (plist-get params :textind)) - (deps (if (plist-member params :deps) (plist-get params :deps))) - (col-labels (plist-get params :labels)) (x-labels (plist-get params :xlabels)) (y-labels (plist-get params :ylabels)) (plot-str (or (plist-get type :plot-str) @@ -650,7 +645,7 @@ line directly before or after the table." org-plot/preset-plot-types))) (unless type - (user-error "Org-plot type `%s' is undefined." type-name)) + (user-error "Org-plot type `%s' is undefined." (plist-get params :plot-type))) (run-with-idle-timer 0.1 nil #'delete-file data-file) (when (eq (cadr table) 'hline) -- 2.29.2 --=-=-=--