% language=us runpath=texruns:manuals/luametafun \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