From b9b55561a8e50feaf0a69b004359cf311326dda5 Mon Sep 17 00:00:00 2001
From: Mohammad Akhlaghi <mohammad@akhlaghi.org>
Date: Thu, 20 Aug 2020 02:03:34 +0100
Subject: Data lineage and replicated plot in one row

Until now, the replicated plot had the width of the full page and the data
lineage graph was under it. Together they were covering more than half of
the height of the page! But the plot showing the number of papers with
tools really doesn't have too much detail, and all the space was being
wasted.

With this commit, the plot is now much much thinner and the data lineage
graph has been fitted to the right of it.
---
 tex/src/figure-tools-per-year.tex | 244 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 234 insertions(+), 10 deletions(-)

(limited to 'tex/src/figure-tools-per-year.tex')

diff --git a/tex/src/figure-tools-per-year.tex b/tex/src/figure-tools-per-year.tex
index f6dc239..738cdad 100644
--- a/tex/src/figure-tools-per-year.tex
+++ b/tex/src/figure-tools-per-year.tex
@@ -1,34 +1,258 @@
-\begin{tikzpicture}[scale=0.9]
-  %% Add the right-side Y axis.
+% All macros commented
+\newcommand{\paperpdf}{}              %  1
+\newcommand{\papertex}{}              %  2
+\newcommand{\projecttex}{}            %  3
+\newcommand{\verifytex}{}             %  4
+\newcommand{\demoplottex}{}           %  5
+\newcommand{\toolsperyear}{}          %  6
+\newcommand{\tablethree}{}            %  7
+\newcommand{\menkexlsx}{}             %  8
+\newcommand{\inputsconf}{}            %  9
+\newcommand{\downloadtex}{}           % 10
+\newcommand{\formattex}{}             % 11
+\newcommand{\demoyearconf}{}          % 12
+\newcommand{\initializetex}{}         % 13
+\newcommand{\expandingproject}{}      % 14
+
+
+
+\begin{tikzpicture}
+
+  %% These white lines are only relevant when we want to add boxes in
+  %% multiple figures (for example to build slides). They are used to fix
+  %% the vertical position of the boxs in the figure so it doesn't change
+  %% as we add more boxes.
+  \draw [white] (-9cm,0) -- (9cm,0);
+  \draw [white] (0,-5cm) -- (0,4cm);
+
+  %% Right-side Y axis (red, logarithmic histogram). This should be created
+  %% under the line, because the line doesn't interfere with interpretting
+  %% the histogram, but the inverse is not true.
   \begin{axis}[
       ymode=log,
-      width=\linewidth,
-      height=0.3\linewidth,
+      width=5cm,
+      height=5cm,
+      axis on top,
       axis x line=none,
       axis y line*=right,
+      at={(-7.4cm,-1.8cm)},
       enlarge x limits = false,
-      ylabel=Num. papers (log-scale),
+      ylabel={Num. papers (red, log-scale)},
       max space between ticks=20,
     ]
-    \addplot+ [ybar, mark=none, fill=red!50!white, red, opacity=0.25]
+    \addplot+ [ybar, mark=none, fill=red!40!white, red!40!white]
     table [x index=0, y index=2] {tex/build/to-publish/tools-per-year.txt};
   \end{axis}
 
+  %% Left-side Y axis (green, linear/percent line).
   \begin{axis}[
       ymin=0,
       ymax=100,
-      width=\linewidth,
-      height=0.3\linewidth,
+      width=5cm,
+      height=5cm,
       xlabel={Year},
-      ylabel={Frac. papers with tools},
       axis y line*=left,
+      at={(-7.4cm,-1.8cm)},
       enlarge x limits = false,
+      ylabel={Frac. papers with tools (green)},
       yticklabel=\pgfmathprintnumber{\tick}\,\%,
       x tick label style={/pgf/number format/1000 sep=},
     ]
 
     %% Linear plot, showing the number of papers mentioning tools.
-    \addplot+ [mark=none, very thick, green!60!black]
+    \addplot+ [mark=none, ultra thick, green!60!black]
     table {tex/build/to-publish/tools-per-year.txt};
   \end{axis}
+
+  %% Use small fonts for the rest.
+  \scriptsize
+
+  %% top-make.mk
+  \node [rectangle,
+         very thick,
+         text centered,
+         font=\ttfamily,
+         text width=2.8cm,
+         anchor=north west,
+         at={(-2.6cm,3.5cm)},
+         minimum width=11.6cm,
+         minimum height=7.25cm,
+         draw=green!50!black!50,
+         fill=black!10!green!2!white,
+         label={[shift={(0,-5mm)}]\texttt{top-make.mk}}] {};
+
+  %% verify.mk
+  \node [at={(-0.7cm,-2.9cm)},
+         thick,
+         rectangle,
+         text centered,
+         font=\ttfamily,
+         text width=2.45cm,
+         minimum width=3.5cm,
+         minimum height=1.3cm,
+         draw=green!50!black!50,
+         fill=black!10!green!12!white,
+         label={[shift={(1cm,-5mm)}]\texttt{verify.mk}}] {};
+
+  %% Paper.mk
+  \node [at={(5.35cm,-2.9cm)},
+         thick,
+         rectangle,
+         text centered,
+         text width=2.8cm,
+         minimum width=7cm,
+         minimum height=1.3cm,
+         draw=green!50!black!50,
+         fill=black!10!green!12!white,
+         font=\ttfamily,
+         label={[shift={(0,-5mm)}]\texttt{paper.mk}}] {};
+
+  %% Work-horse Makefiles, the X axis value of the files is the same. The Y
+  %% axis values range like this:
+  %%      2.1cm
+  %%      1.3cm
+  %%      0.5cm
+  %%     -0.4cm
+  %%     -1.3cm
+  \node [node-makefile, at={(-1.4cm,3cm)},
+        label={[shift={(0,-5mm)}]\texttt{initialize.mk}}] {};
+  \node [node-makefile, at={(0.9cm,3cm)},
+        label={[shift={(0,-5mm)}]\texttt{download.mk}}] {};
+  \node [node-makefile, at={(3.2cm,3cm)},
+        label={[shift={(0,-5mm)}]\texttt{format.mk}}] {};
+  \node [node-makefile, at={(5.5cm,3cm)},
+        label={[shift={(0,-5mm)}]\texttt{demo-plot.mk}}] {};
+
+  %% paper.pdf
+  \ifdefined\paperpdf
+  \node (paperpdf) [node-terminal, at={(7.8cm,-3cm)}] {paper.pdf};
+  \fi
+
+  %% paper.tex and references.tex
+  \ifdefined\papertex
+  \node (reftex) [node-nonterminal, at={(5.5cm,-3.9cm)}] {references.tex};
+  \node (papertex) [node-nonterminal, at={(7.8cm,-3.9cm)}] {paper.tex};
+  \node (papertex-north) [node-point, at={(7.8cm,-3.65cm)}] {};
+  \draw [rounded corners, black!50, line width=1.5pt] (reftex) |- (papertex-north);
+  \draw [->, black!50, line width=1.5pt] (papertex) -- (paperpdf);
+  \fi
+
+  %% project.tex
+  \ifdefined\projecttex
+  \node (projecttex) [node-terminal, at={(3.2cm,-3cm)}] {project.tex};
+  \draw [->, black!50, line width=1.5pt] (projecttex) -- (paperpdf);
+  \fi
+
+  %% verify.tex
+  \ifdefined\verifytex
+  \node (verifytex) [node-terminal, at={(-1.4cm,-3cm)}] {verify.tex};
+  \draw [->, black!50, line width=1.5pt] (verifytex) -- (projecttex);
+  \fi
+
+  %% demo-plot.tex
+  \ifdefined\demoplottex
+  \node (initialize-south) [node-point, at={(-1.4cm,-2cm)}] {};
+  \node (verifytop) [node-point, at={(-1.4cm,-2.75cm)}] {};
+  \node (dptex) [node-terminal, at={(5.5cm,-1.3cm)}] {demo-plot.tex};
+  \draw [rounded corners, ->, black!50, line width=1.5pt]
+        (dptex) |- (initialize-south) |- (verifytop);
+  \fi
+
+  %% tools-per-year.txt
+  \ifdefined\toolsperyear
+  \node (tpyear) [node-terminal, at={(5.5cm,-0.4cm)}] {tools-per-\\year.txt};
+  \draw [->, black!50, line width=1.5pt] (tpyear) -- (dptex);
+  \fi
+
+  %% table-3.txt
+  \ifdefined\tablethree
+  \node (tabthree) [node-terminal, at={(3.2cm,0.5cm)}] {table-3.txt};
+  \draw [rounded corners, ->, black!50, line width=1.5pt] (tabthree) |- (tpyear);
+  \fi
+
+  %% menkexlsx
+  \ifdefined\menkexlsx
+  \node (xlsx) [node-terminal, at={(0.9cm,1.3cm)}] {menke20.xlsx};
+  \draw [->, rounded corners, black!50, line width=1.5pt] (xlsx) |- (tabthree);
+  \fi
+
+  %% INPUTS.conf
+  \ifdefined\inputsconf
+  \node (INPUTS) [node-nonterminal, at={(0.9cm,4cm)}] {INPUTS.conf};
+  \node (xlsx-west) [node-point, at={(-0.25cm,1.37cm)}] {};
+  \draw [->,rounded corners, black!50, line width=1.5pt]
+        (INPUTS.west) -| (xlsx-west) |- (xlsx);
+  \fi
+
+  %% download.tex
+  \ifdefined\downloadtex
+  \node (downloadtex) [node-terminal, at={(0.9cm,-1.3cm)}] {download.tex};
+  \node (downloadtex-west) [node-point, at={(-0.25cm,-1.25cm)}] {};
+  \draw [->,rounded corners, black!50, line width=1.5pt]
+        (INPUTS.west) -| (downloadtex-west) |- (downloadtex);
+  \draw [rounded corners, -, black!50, line width=1.5pt]
+        (downloadtex) |- (initialize-south);
+  \fi
+
+  %% format.tex
+  \ifdefined\formattex
+  \node (fmttex) [node-terminal, at={(3.2cm,-1.3cm)}] {format.tex};
+  \draw [->, black!50, line width=1.5pt] (tabthree) -- (fmttex);
+  \draw [rounded corners, -, black!50, line width=1.5pt]
+        (fmttex) |- (initialize-south);
+  \fi
+
+  %% demo-year.conf
+  \ifdefined\demoyearconf
+  \node (dyearconf) [node-nonterminal, at={(5.5cm,4cm)}] {demo-year.conf};
+  \node (dptex-west) [node-point, at={(4.35cm,-1.25cm)}] {};
+  \draw [->,rounded corners, black!50, line width=1.5pt]
+        (dyearconf.west) -| (dptex-west) |- (dptex);
+  \fi
+
+  %% Initialize.tex
+  \ifdefined\initializetex
+  \node (initializetex) [node-terminal, at={(-1.4cm,-1.3cm)}] {initialize.tex};
+  \draw [->, black!50, line width=1.5pt] (initializetex) -- (verifytex);
+  \node [anchor=west, at={(-2.4cm,1.5cm)}] {Basic project info};
+  \node [anchor=west, at={(-2.4cm,1.2cm)}] {(e.g., Git commit).};
+  \node [anchor=west, at={(-2.4cm,0.5cm)}] {Also defines};
+  \node [anchor=west, at={(-2.4cm,0.2cm)}] {project structure};
+  \node [anchor=west, at={(-2.4cm,-0.1cm)}] {(for \texttt{*.mk} files).};
+  \fi
+
+  %% Expanding project
+  \ifdefined\expandingproject
+
+    %% The Makefile.
+    \node [node-makefile, dotted, at={(7.8cm,3cm)},
+          label={[shift={(0,-5mm)}]\texttt{next-step.mk}}] {};
+
+    %% next-step.tex
+    \node [dotted] (a3tex) [node-terminal, at={(7.8cm,-1.3cm)}] {next-step.tex};
+    \draw [dotted, rounded corners, -, black!50, line width=1.4pt]
+          (a3tex) |- (initialize-south);
+
+    % out-3a.dat and out-3b.dat
+    \node [dotted] (out3a) [node-terminal, at={(7.8cm,2.1cm)}] {out-a.dat};
+    \node [dotted] (out3b) [node-terminal, at={(7.8cm,0.5cm)}] {out-b.dat};
+    \node (a3tex-east) [node-point, at={(8.93cm,-0.8cm)}] {};
+    \draw [dotted, ->, rounded corners, black!50, line width=1.5pt]
+          (out3a.east) -| (a3tex-east) |- (a3tex);
+    \draw [dotted, ->, black!50, line width=1.5pt] (out3b) -- (a3tex);
+
+    %% demo-out.dat
+    \node [dotted] (dout) [node-terminal, at={(5.5cm,1.3cm)}] {demo-out.dat};
+    \draw [dotted, rounded corners, ->, black!50, line width=1.5pt] (dout.south) |- (out3b);
+
+    %% links
+    \node (dout-west) [node-point, at={(5cm,1.3cm)}] {};
+    \draw [dotted, ->, black!50, line width=1.5pt] (xlsx) -- (dout);
+    \node [opacity=0.7] (out3a-west) [node-point, at={(6.65cm,2.1cm)}] {};
+    \draw [dotted, ->, rounded corners, black!50, line width=1.5pt] (xlsx) |- (out3a);
+    \node [dotted] (a3conf1) [node-nonterminal, at={(7.8cm,4cm)}]  {param.conf};
+    \draw [dotted, rounded corners, black!50, line width=1.5pt]
+          (a3conf1.west) -| (out3a-west) |- (out3a);
+  \fi
+
 \end{tikzpicture}
-- 
cgit v1.2.1

