summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/datatool/samples/sample-barchart.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/datatool/samples/sample-barchart.tex
Initial commit
Diffstat (limited to 'macros/latex/contrib/datatool/samples/sample-barchart.tex')
-rw-r--r--macros/latex/contrib/datatool/samples/sample-barchart.tex57
1 files changed, 57 insertions, 0 deletions
diff --git a/macros/latex/contrib/datatool/samples/sample-barchart.tex b/macros/latex/contrib/datatool/samples/sample-barchart.tex
new file mode 100644
index 0000000000..142f1eeb81
--- /dev/null
+++ b/macros/latex/contrib/datatool/samples/sample-barchart.tex
@@ -0,0 +1,57 @@
+ % This file is public domain.
+\documentclass[captions=tableheading]{scrartcl}
+
+\usepackage{tikz}
+\usetikzlibrary{snakes}
+
+\usepackage{databar}
+
+\DTLloaddb{marks}{sample-student-records.csv}
+
+\begin{document}
+
+% Compute average mark for each student:
+\DTLforeach{marks}{%
+\assignI=Assignment 1,%
+\assignII=Assignment 2,%
+\assignIII=Assignment 3}{%
+\DTLmeanforall{\theMean}{\assignI,\assignII,\assignIII}%
+\DTLround{\theMean}{\theMean}{0}\DTLclip{\theMean}{\theMean}%
+\DTLappendtorow{Average}{\theMean}}
+
+\begin{table}
+\caption{Student Marks}
+ \centering
+\DTLdisplaydb[Address,RegNum,Title]{marks}
+\end{table}
+
+\begin{figure}[htbp]
+ \centering
+ % compute the overall mean
+ \DTLmeanforkeys{marks}{Average}{\overallmean}
+ % round it to 2 decimal places
+ \DTLround{\overallmean}{\overallmean}{2}
+ % draw a grey dotted line indicating the overall mean
+ % covering the entire width of the bar chart
+ \renewcommand*{\DTLbaratendtikz}{%
+ \draw[lightgray,loosely dotted] (0,\overallmean) --
+ (\DTLbarchartwidth,\overallmean)
+ node[right,black]{Average (\overallmean)};}
+ % Set the lower bar labels to draw a brace across the current
+ % group, along with the student's name and average score
+ \renewcommand*{\DTLdisplaylowerbarlabel}[1]{%
+ \tikz[baseline=(current bounding box.center)]{
+ \draw[snake=brace,rotate=-90](0,0) -- (\DTLbargroupwidth,0);}
+ \DTLround{\theMean}{\theMean}{2}%
+ \shortstack{#1\\(Average: \theMean)}}
+ % draw the bar chart
+ \DTLmultibarchart{variables={\assignI,\assignII,\assignIII},
+ barwidth=10pt,uppermultibarlabels={\assignI,\assignII,\assignIII},
+ barlabel={\firstname\ \surname}}{marks}
+ {\surname=Surname,\firstname=First Name,\assignI=Assignment 1,%
+ \assignII=Assignment 2,\assignIII=Assignment 3,\theMean=Average}
+ \caption{Student marks}
+\end{figure}
+
+
+\end{document}