From 0a5f59a9aa25b3de7e9659b39ad201aaf7eb5a67 Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Fri, 27 Sep 2019 20:24:34 +0200
Subject: 2019-09-27 18:10:00

---
 .../manuals/luametafun/luametafun-chart.tex        | 441 +++++++++++++++++++++
 1 file changed, 441 insertions(+)
 create mode 100644 doc/context/sources/general/manuals/luametafun/luametafun-chart.tex

(limited to 'doc/context/sources/general/manuals/luametafun/luametafun-chart.tex')

diff --git a/doc/context/sources/general/manuals/luametafun/luametafun-chart.tex b/doc/context/sources/general/manuals/luametafun/luametafun-chart.tex
new file mode 100644
index 000000000..1bd89d350
--- /dev/null
+++ b/doc/context/sources/general/manuals/luametafun/luametafun-chart.tex
@@ -0,0 +1,441 @@
+% language=us
+
+\environment luametafun-style
+
+\startcomponent luametafun-chart
+
+\startchapter[title={Chart}]
+
+This is another example implementation but it might be handy for simple cases of
+presenting results. Of course one can debate the usefulness of certain ways of
+presenting but here we avoid that discussion. Let's start with a simple pie
+chart (\in {figure} [chart:1]).
+
+\startbuffer[1]
+\startMPcode
+    draw lmt_chart_circle [
+        samples    = { { 1, 4, 3, 2, 5, 7, 6 } },
+        percentage = true,
+        trace      = true,
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[1][option=TEX]
+
+\startplacefigure[reference=chart:1]
+    \getbuffer[1]
+\stopplacefigure
+
+As with all these \LMTX\ extensions, you're invited to play with the parameters.
+in \in {figure} [chart:2] we see a variant that adds labels as well as one that
+has a legend.
+
+\startbuffer[2a]
+\startMPcode
+draw lmt_chart_circle [
+    height      = 4cm,
+    samples     = { { 1, 4, 3, 2, 5, 7, 6 } },
+    percentage  = true,
+    trace       = true,
+    labelcolor  = "white",
+    labelformat = "@0.1f",
+    labelstyle  = "ttxx"
+] ;
+\stopMPcode
+\stopbuffer
+
+The styling of labels and legends can be influenced independently.
+
+\typebuffer[2a][option=TEX]
+
+\startbuffer[2b]
+\startMPcode
+draw lmt_chart_circle [
+    height      = 4cm,
+    samples     =  { { 1, 4, 3, 2, 5, 7, 6 } },
+    percentage  = false,
+    trace       = true,
+    linewidth   = .125mm,
+    originsize  = 0,
+    labeloffset = 3cm,
+    labelstyle  = "bfxx",
+    legendstyle = "tfxx",
+    legend      = {
+        "first", "second", "third", "fourth",
+        "fifth", "sixths", "sevenths"
+    }
+] ;
+
+\stopMPcode
+\stopbuffer
+
+\typebuffer[2b][option=TEX]
+
+\startplacefigure[reference=chart:2]
+    \startcombination
+        {\getbuffer[2a]} {}
+        {\getbuffer[2b]} {}
+    \stopcombination
+\stopplacefigure
+
+A second way of rendering are histograms, and the interface is mostly the same.
+In \in {figure} [chart:3] we see two variants
+
+\startbuffer[3a]
+\startMPcode
+    draw lmt_chart_histogram [
+        samples    = { { 1, 4, 3, 2, 5, 7, 6 } },
+        percentage = true,
+        cumulative = true,
+        trace      = true,
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\startbuffer[3b]
+\startMPcode
+    draw lmt_chart_histogram [
+        samples    = {
+            { 1, 4, 3, 2, 5, 7, 6 },
+            { 1, 2, 3, 4, 5, 6, 7 }
+        },
+        background = "lightgray",
+        trace      = true,
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[3a][option=TEX]
+
+and one with two datasets:
+
+\typebuffer[3b][option=TEX]
+
+\startplacefigure[reference=chart:3]
+    \startcombination
+        {\getbuffer[3a]} {}
+        {\getbuffer[3b]} {}
+    \stopcombination
+\stopplacefigure
+
+\startbuffer[4]
+\startMPpage[offset=5mm]
+    draw lmt_chart_histogram [
+        samples         = {
+            { 1, 4, 3, 2, 5, 7, 6 },
+            { 1, 2, 3, 4, 5, 6, 7 }
+        },
+        percentage      = true,
+        cumulative      = true,
+        showlabels      = false,
+        backgroundcolor = "lightgray",
+    ] ;
+\stopMPpage
+\stopbuffer
+
+A cumulative variant is shown in \in {figure} [chart:4] where we also add a
+background (color).
+
+\typebuffer[4][option=TEX]
+
+\startplacefigure[reference=chart:4]
+    \getbuffer[4]
+\stopplacefigure
+
+A different way of using colors is shown in \in {figure} [chart:5] where each
+sample gets its own (same) color.
+
+\startbuffer[5]
+\startMPcode
+    draw lmt_chart_histogram [
+        samples    = {
+            { 1, 4, 3, 2, 5, 7, 6 },
+            { 1, 2, 3, 4, 5, 6, 7 }
+        },
+        percentage = true,
+        cumulative = true,
+        showlabels = false,
+        background = "lightgray",
+        colormode  = "local",
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[5][option=TEX]
+
+\startplacefigure[reference=chart:5]
+    \getbuffer[5]
+\stopplacefigure
+
+As with pie charts you can add labels and a legend:
+
+\startbuffer[6a]
+\startMPcode
+    draw lmt_chart_histogram [
+        height          = 6cm,
+        samples         = { { 1, 4, 3, 2, 5, 7, 6 } },
+        percentage      = true,
+        cumulative      = true,
+        trace           = true,
+        labelstyle      = "ttxx",
+        labelanchor     = "top",
+        labelcolor      = "white",
+        backgroundcolor = "middlegray",
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[6a][option=TEX]
+
+The previous and next examples are shown in \in {figure} [chart:6]. The height
+specified here concerns the graphic and excludes the labels,
+
+\startbuffer[6b]
+\startMPcode
+    draw lmt_chart_histogram [
+        height      = 6cm,
+        width       = 10mm,
+        samples     = { { 1, 4, 3, 2, 5, 7, 6 } },
+        trace       = true,
+        maximum     = 7.5,
+        linewidth   = 1mm,
+        originsize  = 0,
+        labelanchor = "bot",
+        labelcolor  = "black"
+        labelstyle  = "bfxx"
+        legendstyle = "tfxx",
+        labelstrut  = "yes",
+        legend      = {
+            "first", "second", "third", "fourth",
+            "fifth", "sixths", "sevenths"
+        }
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[6b][option=TEX]
+
+\startplacefigure[reference=chart:6]
+    \startcombination
+        {\getbuffer[6a]} {}
+        {\getbuffer[6b]} {}
+    \stopcombination
+\stopplacefigure
+
+The third category concerns bar charts that run horizontal. Again we see similar
+options driving the rendering (\in {figure} [chart:7]).
+
+\startbuffer[7a]
+\startMPcode
+    draw lmt_chart_bar [
+        samples    = { { 1, 4, 3, 2, 5, 7, 6 } },
+        percentage = true,
+        cumulative = true,
+        trace      = true,
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[7a][option=TEX]
+
+\startbuffer[7b]
+\startMPcode
+    draw lmt_chart_bar [
+        samples         = { { 1, 4, 3, 2, 5, 7, 6 } },
+        percentage      = true,
+        cumulative      = true,
+        showlabels      = false,
+        backgroundcolor = "lightgray",
+    ] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[7b][option=TEX]
+
+Determining the offset of labels is manual work:
+
+\startbuffer[7c]
+\startMPcode
+draw lmt_chart_bar [
+    width           = 4cm,
+    height          = 5mm,
+    samples         = { { 1, 4, 3, 2, 5, 7, 6 } },
+    percentage      = true,
+    cumulative      = true,
+    trace           = true,
+    labelcolor      = "white",
+    labelstyle      = "ttxx",
+    labelanchor     = "rt",
+    labeloffset     = .25EmWidth,
+    backgroundcolor = "middlegray",
+] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[7c][option=TEX]
+
+\startplacefigure[reference=chart:7]
+    \startcombination[3*1]
+        {\getbuffer[7a]} {}
+        {\getbuffer[7b]} {}
+        {\getbuffer[7c]} {}
+    \stopcombination
+\stopplacefigure
+
+Here is one with a legend (rendered in \in {figure} [chart:8]):
+
+\startbuffer[8]
+\startMPcode
+draw lmt_chart_bar [
+    width       = 8cm,
+    height      = 10mm,
+    samples     = { { 1, 4, 3, 2, 5, 7, 6 } },
+    trace       = true,
+    maximum     = 7.5,
+    linewidth   = 1mm,
+    originsize  = 0,
+    labelanchor = "lft",
+    labelcolor  = "black"
+    labelstyle  = "bfxx"
+    legendstyle = "tfxx",
+    labelstrut  = "yes",
+    legend      = {
+        "first", "second", "third", "fourth",
+        "fifth", "sixths", "sevenths"
+    }
+] ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[8][option=TEX]
+
+\startplacefigure[reference=chart:8]
+    \getbuffer[8]
+\stopplacefigure
+
+You can have labels per dataset as well as draw multiple datasets in
+one image, see \in {figure} [chart:9]:
+
+\startbuffer[9]
+\startMPcode
+    draw lmt_chart_bar [
+        samples = {
+            { 1, 4, 3, 2, 5, 7, 6 },
+            { 3, 2, 5, 7, 5, 6, 1 }
+        },
+        labels      = {
+            { "a1", "b1", "c1", "d1", "e1", "f1", "g1" },
+            { "a2", "b2", "c2", "d2", "e2", "f2", "g2" }
+        },
+        labeloffset = -EmWidth,
+        labelanchor = "center",
+        labelstyle  = "ttxx",
+        trace       = true,
+        center      = true,
+    ] ;
+
+    draw lmt_chart_bar [
+        samples     = {
+            { 1, 4, 3, 2, 5, 7, 6 }
+        },
+        labels      = {
+            { "a", "b", "c", "d", "e", "f", "g" }
+        },
+        labeloffset = -EmWidth,
+        labelanchor = "center",
+        trace       = true,
+        center      = true,
+    ] shifted (10cm,0) ;
+\stopMPcode
+\stopbuffer
+
+\typebuffer[9][option=TEX]
+
+\startplacefigure[reference=chart:9]
+    \getbuffer[9]
+\stopplacefigure
+
+\starttabulate[|T|T|T|p|]
+\FL
+\BC name            \BC type    \BC default \BC comment \NC \NR
+\ML
+\NC originsize      \NC numeric \NC 1mm     \NC \NC \NR
+\NC trace           \NC boolean \NC false   \NC \NC \NR
+\NC showlabels      \NC boolean \NC true    \NC \NC \NR
+\NC center          \NC boolean \NC false   \NC \NC \NR
+\ML
+\NC samples         \NC list    \NC         \NC \NC \NR
+\NC
+\NC cumulative      \NC boolean \NC false   \NC \NC \NR
+\NC percentage      \NC boolean \NC false   \NC \NC \NR
+\NC maximum         \NC numeric \NC 0       \NC \NC \NR
+\NC distance        \NC numeric \NC 1mm     \NC \NC \NR
+\ML
+\NC labels          \NC list    \NC         \NC \NC \NR
+\NC labelstyle      \NC string  \NC         \NC \NC \NR
+\NC labelformat     \NC string  \NC         \NC \NC \NR
+\NC labelstrut      \NC string  \NC auto    \NC \NC \NR
+\NC labelanchor     \NC string  \NC         \NC \NC \NR
+\NC labeloffset     \NC numeric \NC 0       \NC \NC \NR
+\NC labelfraction   \NC numeric \NC 0.8     \NC \NC \NR
+\NC labelcolor      \NC string  \NC         \NC \NC \NR
+\ML
+\NC backgroundcolor \NC string  \NC         \NC \NC \NR
+\NC drawcolor       \NC string  \NC white   \NC \NC \NR
+\NC fillcolors      \NC list    \NC         \NC primary (dark) colors \NC \NR
+\NC colormode       \NC string  \NC global  \NC \NC or \type {local} \NC \NR
+\ML
+\NC linewidth       \NC numeric \NC .25mm   \NC \NC \NR
+\ML
+\NC legendcolor     \NC string  \NC         \NC \NC \NR
+\NC legendstyle     \NC string  \NC         \NC \NC \NR
+\NC legend          \NC list    \NC         \NC \NC \NR
+\LL
+\stoptabulate
+
+Pie charts have:
+
+\starttabulate[|T|T|]
+\FL
+\BC name        \BC default \NC \NR
+\ML
+\NC height      \NC 5cm     \NC \NR
+\NC width       \NC 5mm     \NC \NR
+\NC labelanchor \NC         \NC \NR
+\NC labeloffset \NC 0       \NC \NR
+\NC labelstrut  \NC no      \NC \NR
+\LL
+\stoptabulate
+
+Histograms come with:
+
+\starttabulate[|T|T|]
+\FL
+\BC name        \BC default \NC \NR
+\ML
+\NC height      \NC 5cm     \NC \NR
+\NC width       \NC 5mm     \NC \NR
+\NC labelanchor \NC bot     \NC \NR
+\NC labeloffset \NC 1mm     \NC \NR
+\NC labelstrut  \NC auto    \NC \NR
+\LL
+\stoptabulate
+
+Bar charts use:
+
+\starttabulate[|T|T|]
+\FL
+\BC name        \BC default \NC \NR
+\ML
+\NC height      \NC 5cm     \NC \NR
+\NC width       \NC 5mm     \NC \NR
+\NC labelanchor \NC lft     \NC \NR
+\NC labeloffset \NC 1mm     \NC \NR
+\NC labelstrut  \NC no      \NC \NR
+\LL
+\stoptabulate
+
+\stopchapter
+
+\stopcomponent
-- 
cgit v1.2.3

