# Two y-axis graph problem with ylabel and legend - PGFplots

I have problems with using a two y-axis graph.

\documentclass{article}

\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis y line*=right,
ymin=0, ymax=300,
ylabel style={align=center},
ylabel={Very very very very very very long ylabel\\with a line break},
width=0.9\linewidth,
height=8cm,
ymajorgrids,
xtick ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
ybar
]

\addplot[bar width=5 pt, draw=blue, fill=blue!10] coordinates{
(1,96)(2,114.9)(3,169.7)(4,182.1)(5,217.4)(6,238.7)(7,248.5)(8,242.3)(9,202.7)(10,147.2)(11,94.4)(12,81.8)
};
\label{C}

\addplot[bar width=5 pt, draw=red, fill=red!10] coordinates{
(1,88)(2,103)(3,171)(4,180)(5,199)(6,220)(7,250)(8,202)(9,166)(10,163)(11,140)(12,94)
};
\label{D}
\end{axis}

\begin{axis}[
axis y line*=left,
ymin=0, ymax=30,
xtick ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
xticklabels={},
ylabel=ylabel1,
width=0.9\linewidth,
height=8cm,
legend style={at={(0,1)},anchor=north west},
]

(1,3.1)(2,3.3)(3,5.4)(4,7.4)(5,11.0)(6,14.1)(7,15.8)(8,15.7)(9,12.9)(10,10.4)(11,6.1)(12,3.8)
};

(1,10.1)(2,11.7)(3,15.1)(4,17.3)(5,21.2)(6,24.5)(7,26.9)(8,27.1)(9,24.0)(10,19.4)(11,13.7)(12,10.5)
};
\end{axis}


\end{tikzpicture} \end{document}

The first problem is that I can't perform line break with ylabel even though I indicated that I want a centered alignment (as stated here).

The second problem is : how to center or right align the symbols (not the legend entries) in the legend ?

• The first problem is because you add compat=newest inside the axis. If you set it outside the axis, the problem disappears. – user194703 Apr 15 at 19:53
• @Schrödinger'scat, I need to work on my speed skill ^^. – BambOo Apr 15 at 19:58

The issue with the ylabel is because of the compat=newest inside the axis. If you move it out, it disappears. It suffices to move it before ylabel style but I think moving it out is cleaner. As for centering the legend pictures I have no better solution than redefining the corresponding legend image code. (Of course, you can do that locally if needed.)

\documentclass{article}
\usepackage{pgfplots}
/pgfplots/ybar legend/.style={
/pgfplots/legend image code/.code={
\draw [##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt]
plot coordinates {(0.5em,0.8em) (0.5em+2*\pgfplotbarwidth,0.6em)}; },
}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis y line*=right,
ymin=0, ymax=300,
ylabel style={align=center},
ylabel={Very very very very very very long ylabel\\with a line break},
width=0.9\linewidth,
height=8cm,
ymajorgrids,
xtick ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
ybar
]
\addplot[bar width=5 pt, draw=blue, fill=blue!10] coordinates{
(1,96)(2,114.9)(3,169.7)(4,182.1)(5,217.4)(6,238.7)(7,248.5)(8,242.3)(9,202.7)(10,147.2)(11,94.4)(12,81.8)
};
\label{C}

\addplot[bar width=5 pt, draw=red, fill=red!10] coordinates{
(1,88)(2,103)(3,171)(4,180)(5,199)(6,220)(7,250)(8,202)(9,166)(10,163)(11,140)(12,94)
};
\label{D}
\end{axis}

\begin{axis}[
axis y line*=left,
ymin=0, ymax=30,
xtick ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
xticklabels={},
ylabel=ylabel1,
width=0.9\linewidth,
height=8cm,
legend style={at={(0,1)},anchor=north west},
]

(1,3.1)(2,3.3)(3,5.4)(4,7.4)(5,11.0)(6,14.1)(7,15.8)(8,15.7)(9,12.9)(10,10.4)(11,6.1)(12,3.8)
};