I am trying to adapt How to create a multiline timeline to my case.
If I try to get larger scaling factor for x-values (years), i.e. from 0.28 to any higher value
\pgfmathsetmacro\yearscale{0.28} % scaling factor for x-values (years)
I get this error:
Dimension too large.
myfile.tex, 77
<recently read> \pgf@xx
l.77 }
I can't work with sizes bigger than about 19 feet.
Continue and I'll use the largest value I can.
How can I solve this error ?
Here you are code and resulting plot (that one with scaling factor for x-values (years) equal to 0.28):
\documentclass{article}
\usepackage{tikz, pgfplotstable}
\usetikzlibrary{arrows.meta}
\usepackage[utf8]{inputenc}
% read in table
\pgfplotstableread[col sep=comma]{
label,startyear,endyear
A , 2011 , 2012
B , 2016 , 2018
C, 2018 , 2022
}\authors
\pgfplotstableread[col sep=comma]{
label,startyear,endyear
D , 2003 , 2008
E , 2008 , 2011
F , 2012 , 2014
G , 2013 , 2017
}\events
% add color columns
\pgfplotstablecreatecol[create col/set={blue!30}]{color}{\authors}
\pgfplotstablecreatecol[create col/set={red!30}]{color}{\events}
% append events table to authors table
\pgfplotstablevertcat{\authors}{\events}
% sort by startyear
\pgfplotstablesort[sort key=startyear]\sortedtable\authors
\begin{document}
% if you want to look at the table
%\pgfplotstabletypeset[
% columns/label/.style={string type},
% columns/color/.style={string type}
%]\sortedtable
\noindent\begin{tikzpicture}
\pgfmathsetmacro\yearscale{0.28} % scaling factor for x-values (years)
\pgfmathsetmacro\yscale{0.3} % scaling for y-direction -- effectively vertical distance between bars
\pgfmathsetmacro\barheight{0.25} % height of bars
\pgfplotstablegetrowsof{\sortedtable}
\pgfmathsetmacro{\M}{\pgfplotsretval-1}
\pgfplotstablegetcolsof{\sortedtable}
\pgfmathsetmacro{\N}{\pgfplotsretval-1}
\foreach [count=\i,evaluate=\i as \ylevel using \i*\yscale] \row in {0,...,\M}{
% get entries from table row
\pgfplotstablegetelem{\row}{[index]0}\of\sortedtable
\xdef\txt{\pgfplotsretval}
\pgfplotstablegetelem{\row}{[index]1}\of\sortedtable
\xdef\xstart{\pgfplotsretval}
\pgfplotstablegetelem{\row}{[index]2}\of\sortedtable
\xdef\xend{\pgfplotsretval}
\pgfplotstablegetelem{\row}{[index]3}\of\sortedtable
\xdef\barcolor{\pgfplotsretval}
\xdef\TheLastY{\ylevel}
\ifnum \xend=-1
% single day entry, draw circle
\filldraw [draw=black!99!\barcolor,fill=\barcolor] (\xstart*\yearscale,-\ylevel) circle[radius=\barheight/2.5] node[black,right=3pt,font=\scriptsize] {\txt};
\else
% interval, draw a rectangle
\fill [\barcolor] (\xstart*\yearscale,-\ylevel-\barheight/2) rectangle (\xend*\yearscale,-\ylevel+\barheight/2);
% add text label right of the rectangle
\node [right,font=\scriptsize] at (\xend*\yearscale,-\ylevel) {\txt};
\fi
}
\draw [Stealth-Stealth]
(2003*\yearscale,0)
-- (2003*\yearscale,-\TheLastY-\yscale)
-- (2023*\yearscale,-\TheLastY-\yscale);
% add ticks on x-axis
\foreach \year in {2003,2004,...,2022}
\draw (\year*\yearscale,-\TheLastY-\yscale) ++(0,3pt) -- ++(0,-6pt) node[below] {\year};
\end{tikzpicture}
\end{document}