From 0b1b2f84b29737ec5e28c1d689b3844ce622b7d0 Mon Sep 17 00:00:00 2001 From: Dimitri Lozeve Date: Fri, 30 Apr 2021 23:28:58 +0200 Subject: [PATCH] Add option to add title --- README.org | 5 ++++- demo.png | Bin 23188 -> 26495 bytes demo.ss | 2 +- uniplot/lineplot.ss | 8 +++++++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.org b/README.org index 98361b8..4a82dad 100644 --- a/README.org +++ b/README.org @@ -7,12 +7,15 @@ Depends on [[https://github.com/dlozeve/fancy][Fancy]] for colors and display. #+ATTR_HTML: :width 100% :style margin-left: auto; margin-right: auto; [[./demo.png]] -Annual CO₂ emissions (t) (source: [[https://ourworldindata.org/grapher/annual-co2-emissions-per-country?tab=chart&time=1850..latest&country=CHN~USA~Europe][Our World in Data]]) +(source: [[https://ourworldindata.org/grapher/annual-co2-emissions-per-country?tab=chart&time=1850..latest&country=CHN~USA~Europe][Our World in Data]]) ** Features - Braille canvas for plotting - Line plots +- Axes and tick labels showing ranges +- Optional title, x-axis label, and legend +- Input data loading from a CSV file ** References diff --git a/demo.png b/demo.png index d0d633022713c75021edcaa0edf6840862267858..500c82ffafdc3a0cfb1493157306a823d73eec3f 100644 GIT binary patch literal 26495 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 Qi#ec%s_v~K<=+DT2S^Fsg8%>k literal 23188 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 zM@`JMInumber x) +nan.0))))) - (displayln (line-plot lsts + (displayln (line-plot lsts title: (if (null? args) "" (car args)) xlabel: (car names) names: (cdr names)))) diff --git a/uniplot/lineplot.ss b/uniplot/lineplot.ss index 794af01..a8f245c 100644 --- a/uniplot/lineplot.ss +++ b/uniplot/lineplot.ss @@ -64,9 +64,14 @@ (set! (plot-str plot) (str (plot-str plot) (make-string (quotient (plot-hsize plot) 2) #\ ) xlabel "\n"))) +(def (add-title! plot title) + (set! (plot-str plot) + (str "\n" (make-string (quotient (- (plot-hsize plot) 10) 2) #\ ) title "\n\n" + (plot-str plot)))) + (def (line-plot lsts (colors +default-colors+) width: (width 160) height: (height 100) - xlabel: (xlabel "") names: (names [])) + title: (title "") xlabel: (xlabel "") names: (names [])) (define-values (xmin xmax ymin ymax canvases) (match lsts ([ys] (let ((xmin 0) @@ -104,4 +109,5 @@ (add-border! plot xmin xmax ymin ymax) (unless (null? names) (add-legend! plot names colors)) (unless (string-empty? xlabel) (add-xlabel! plot xlabel)) + (unless (string-empty? title) (add-title! plot title)) (plot-str plot))