From b9b55561a8e50feaf0a69b004359cf311326dda5 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi 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 ++++++++++++++++++++++++++++++++++++-- tex/src/preamble-pgfplots.tex | 48 ++++---- 2 files changed, 261 insertions(+), 31 deletions(-) (limited to 'tex/src') 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} diff --git a/tex/src/preamble-pgfplots.tex b/tex/src/preamble-pgfplots.tex index 05e73b7..0c0485c 100644 --- a/tex/src/preamble-pgfplots.tex +++ b/tex/src/preamble-pgfplots.tex @@ -126,29 +126,45 @@ %% Nodes in demo graphs -\tikzset{node-terminal/.style={ + +%% sub-Makefiles. +\tikzset{node-makefile/.style={ + thick, + rectangle, + anchor=north, + minimum height=4.7cm, + minimum width=2.1cm, + draw=green!50!black!50, + fill=black!10!green!12!white}} + +%% Input files (green, sharp-edged boxes). +\tikzset{node-nonterminal/.style={ rectangle, very thick, - draw=blue!50, + anchor=north, text centered, top color=white, - minimum size=6mm, - text width=2.1cm, - rounded corners=3mm, - bottom color=blue!20, + text width=1.7cm, + minimum height=4mm, + draw=green!50!black!50, + bottom color=green!80!black!50, font=\ttfamily}} -\tikzset{node-nonterminal/.style={ +\tikzset{node-terminal/.style={ rectangle, very thick, + draw=blue!50, text centered, top color=white, - text width=2.1cm, - minimum size=6mm, - draw=green!50!black!50, - bottom color=green!80!black!50, + text width=1.7cm, + minimum height=4mm, + rounded corners=2mm, + bottom color=blue!20, font=\ttfamily}} + +%%%%%%%%%%%%%%%%%%% + \tikzset{node-nonterminal-thin/.style={ rectangle, thick, @@ -160,16 +176,6 @@ bottom color=green!80!black!50, font=\ttfamily\scriptsize}} -\tikzset{node-makefile/.style={ - thick, - rectangle, - anchor=south, - minimum width=2.6cm, - minimum height=5cm, - draw=green!50!black!50, - fill=black!10!green!12!white, -}} - \tikzset{node-point/.style={ circle, black!50, -- cgit v1.2.1