# Tikz/pgfplots Reduce distance between Tick labels line break

I'm pretty desperate with a problem I have right now. I'm trying to create a lollipop plot that has different categories on the y-axis and occurrences on the x-axis. According to the below code. Note that I use https://github.com/nschloe/matplotlib2tikz to convert matplotlib plots to tikz/pgfplot. Now I have the problem that the text is too long for some categories on the Y-tick labels and must therefore be breaked, because elswise the plot would reach out of the document (The width of the plot is only altering the plot itself but not the text size). I use the y tick label style "text width" to break the lines here. Since I have about 16 of these diagrams, I want them to be about 5 cm high, as they would take up too much space in the document if they were higher. As you can see, when you wrap a line, the distance between the new line is greater than the distance between the tick label to the upper and lower tick labels.

Now to my question: Is there a way that I can reduce the distance between two lines of a tick label?

  \documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
\definecolor{color0}{rgb}{0.529411764705882,0.807843137254902,0.92156862745098}
\definecolor{color1}{rgb}{0.12156862745098,0.466666666666667,0.705882352941177}
\begin{axis}[
height=5cm,
tick align=outside,
tick pos=left,
width=\textwidth,
x grid style={white!69.01960784313725!black},
xmajorgrids,
xmin=-0.4, xmax=8.4,
y grid style={white!69.01960784313725!black},
y tick label style ={anchor=east, text width={5cm}},
ymin=-0.45, ymax=5.45,
ytick={0,1,2,3,4,5},
yticklabels={This is some long text,This is some quite long text,This is some very long text that might break,This is some long text,This is some long text,Short text}
]
\path [draw=color0, semithick] (axis cs:0,0)
--(axis cs:8,0);

\path [draw=color0, semithick] (axis cs:0,1)
--(axis cs:6,1);

\path [draw=color0, semithick] (axis cs:0,2)
--(axis cs:3,2);

\path [draw=color0, semithick] (axis cs:0,3)
--(axis cs:3,3);

\path [draw=color0, semithick] (axis cs:0,4)
--(axis cs:3,4);

\path [draw=color0, semithick] (axis cs:0,5)
--(axis cs:3,5);

\addplot [semithick, color1, mark=*, mark size=3, mark options={solid}, only marks, forget plot]
table [row sep=\\]{%
8   0 \\
6   1 \\
3   2 \\
3   3 \\
3   4 \\
3   5 \\
};

\end{axis}

\end{tikzpicture}

\end{document}


With pgfplots:

\documentclass[a4paper]{article}% recent version of article use utf8 encoding
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{pgfplotstable}

Y,                                              V
This is some long text,                         8
This is some quite long text,                   6
This is some very long text that might break,   3
This is some long text,                         3
This is some long text,                         3
Short text,                                     3
}\mydata

\begin{document}
\noindent%
\begin{tikzpicture}
\begin{axis}[
height=5cm, width=0.7\textwidth-2*\pgfkeysvalueof{/pgf/inner xsep},
scale only axis,                        % <-------------------
grid=major,
every axis plot post/.append style={very thick},
enlarge x limits=0.025,
enlarge y limits=0.05,
xmin=0, xmax=8,
xtick={0,...,8},
ytick={0,...,5},
yticklabels from table={\mydata}{Y},    % <-------------------
table/y expr = \coordindex,             % <-------------------
y tick label style={text width=0.3\textwidth, % <---
align=right, anchor=east}, % display label sideways
mark options={solid}, only marks, forget plot
]
\end{axis}
\end{tikzpicture}
\end{document}


(red lines indicate text borders)

Pure TikZ where coding is a bit more difficult but you can definitely customize much more:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[y=0.8cm] % <-- Change this to change spacing
\draw (-0.5,0) rectangle (8.5,6);
\foreach \i in {0,...,8} {
\draw[white!70!black] (\i,0)--(\i,6);
\draw (\i,0)--(\i,-.1) node[below] {\i};
}
\begin{scope}[every node/.style={left,text width=5cm,align=left}]
\draw (-.5,0.5)--(-.6,0.5) node {This is some long text};
\draw (-.5,1.5)--(-.6,1.5) node {This is some quite long text};
\draw (-.5,2.5)--(-.6,2.5) node {This is some very long text that that might break};
\draw (-.5,3.5)--(-.6,3.5) node {This is some long text};
\draw (-.5,4.5)--(-.6,4.5) node {This is some long text};
\draw (-.5,5.5)--(-.6,5.5) node {Short text};
\end{scope}
\foreach \i/\j in {0/8,1/6,2/3,3/3,4/3,5/3} {
\draw[blue!50!cyan] (0,\i+0.5)--(\j,\i+0.5);
\node[circle,fill=blue!50!cyan] at (\j,\i+0.5) {};
}
\end{tikzpicture}
\end{document}


If you want to use article document class, here is the code

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[y=0.8cm] % <-- Change this to change spacing
\draw (-0.5,0) rectangle (8.5,6);
\foreach \i in {0,...,8} {
\draw[white!70!black] (\i,0)--(\i,6);
\draw (\i,0)--(\i,-.1) node[below] {\i};
}
\begin{scope}[every node/.style={left,text width=5cm,align=left}]
\draw (-.5,0.5)--(-.6,0.5) node {This is some long text};
\draw (-.5,1.5)--(-.6,1.5) node {This is some quite long text};
\draw (-.5,2.5)--(-.6,2.5) node {This is some very long text that that might break};
\draw (-.5,3.5)--(-.6,3.5) node {This is some long text};
\draw (-.5,4.5)--(-.6,4.5) node {This is some long text};
\draw (-.5,5.5)--(-.6,5.5) node {Short text};
\end{scope}
\foreach \i/\j in {0/8,1/6,2/3,3/3,4/3,5/3} {
\draw[blue!50!cyan] (0,\i+0.5)--(\j,\i+0.5);
\node[circle,fill=blue!50!cyan] at (\j,\i+0.5) {};
}
\end{tikzpicture}
\end{document}

• Thank you for your answer. Sadly this doesn't help in my case. I reproduced your example with my data and it still is not aligned properly. I use a texfile which only includes the tikzpicture environment and its content and is inserted with \input{path}. If I would use the documenttype you suggested would the result be different? How can I input your example into my document including the tikz documentclass? – dharok Mar 18 '19 at 12:28
• @dharok So you are having problems with the document class? standalone is only for MWE purposes, you of course don't use it in your document. – user156344 Mar 18 '19 at 12:33
• No i tried it in my document and it compiled but still didnt reduce the space between line breaks. I just wonderd if in the document class in the first example would alter the result, but I got that wrong. At this point i have a work having big height, so the text looks normal and then using scaleboxes to reduce the size of the plot overall. – dharok Mar 18 '19 at 16:21