4

In the legend, I would like to have a line for the red and orange lines (as it is the case), and ybar legend style for the rest. I just can't figure out the easiest/best/any way to do it.

MWE:

\documentclass[border=1cm]{minimal}
\usepackage{pgfplots}
\usepackage[utf8]{inputenc}
\pgfplotsset{compat=newest}

%--------------------
\begin{document}
%--------------------

\pgfplotsset{
   width=0.8\textwidth,
   height=0.35\textheight,
   grid=major,
   major grid style={dotted},
   symbolic x coords={Janv.,Févr.,Mars,Avril,Mai,Juin,Juil.,Août,Sept.,Oct.,Nov.,Déc.},
   enlarge y limits={upper,value=0.05},
   legend style={
      fill,
      at={(0.50,-0.2)},
      legend columns=2,
      legend cell align=left,
      anchor=north
      },
   }
\begin{tikzpicture}
\begin{axis}[
   xtick pos=left,
   axis y line*=right,
   ybar,
   ymajorgrids,
   bar width=0.13cm,
   ymin=0, ymax=6000,
   ytick={0, 1000, 2000, 3000, 4000, 5000, 6000},
   yticklabels={0, 1000, 2000, 3000, 4000, 5000, 6000},
   ylabel style={align=center},
   ylabel={Nombre de données utilisées\\ pour calculer $T_{LK2}$},
   xtick=data,
   xticklabel style={
      inner sep=0pt,
      anchor=north east,
      rotate=60
      }
   ]
   \addplot[ybar legend,fill=blue!20] coordinates {
      (Janv.,4219) (Févr.,3438) (Mars,3091)
      (Avril,2884) (Mai,2876) (Juin,5849)
      (Juil.,4514) (Août,3069) (Sept.,5597)
      (Oct.,5506) (Nov.,5406) (Déc.,4873)
      };\label{A}               
   \addplot[ybar legend,fill=blue!60] coordinates {
      (Janv.,0716) (Févr.,1955) (Mars,3507)
      (Avril,4349) (Mai,4313) (Juin,4423)
      (Juil.,4861) (Août,3128) (Sept.,4550)
      (Oct.,2843) (Nov.,3395) (Déc.,4392)
      };\label{B}                
\end{axis}
\begin{axis}[
   axis y line*=left,
   xticklabels={},
   ymin=1.0, ymax=4,
   ytick={1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0},
   ylabel={Trouble atmosphérique},
   ]
   \addlegendimage{/pgfplots/refstyle=A}
   \addlegendentry{Nombre de données (Golden)}
   \addlegendimage{draw=blue!60,/pgfplots/refstyle=B}
   \addlegendentry{Nombre de données (Perpignan)}
   \addplot[very thick,draw=red!20] plot coordinates{
      (Janv.,1.97)(Févr.,2.05) (Mars,2.25)
      (Avril,2.58) (Mai,2.47) (Juin,2.63)
      (Juil.,2.92) (Août,2.84) (Sept.,2.44)
      (Oct.,2.22) (Nov.,2.07) (Déc.,2.01)
      };
   \addlegendentry{$\langle T_{LK2} \rangle_{mois}$ calculé (Golden)}
   \addplot[very thick,draw=red!90] plot coordinates {
      (Janv.,2.28) (Févr.,2.41) (Mars,2.42)
      (Avril,2.62) (Mai,2.43) (Juin,3.19)
      (Juil.,2.90) (Août,3.04) (Sept.,2.75)
      (Oct.,2.80) (Nov.,2.20) (Déc.,2.31)
      };
   \addlegendentry{$\langle T_{LK2} \rangle_{mois}$ calculé (Perpignan)}
   \end{axis}
\end{tikzpicture}

%---------------%
\end{document}
%---------------%

enter image description here

2
  • I'm redirecting you to this verified answer : legend looks strange for joint line and bar plot in pgfplots.
    – PMC1234
    Jan 5, 2016 at 11:57
  • Well, I did see that answer and I am afraid it's not helping in this case. The fact that there are two ordinates is messing with the legend style and I do not know how to solve this.
    – Bibi
    Jan 5, 2016 at 13:52

1 Answer 1

3

Like this? You may have forgotten to put the ybar option before ybar legend. The problem is that all y legends go left, but apparently this is just an issue for me and works for other people. Output :

MWE output

TikZ MWE :

\documentclass[border=1cm]{minimal}
\usepackage{pgfplots}
\usepackage[utf8]{inputenc}
\pgfplotsset{compat=newest}

\begin{document}
    
\pgfplotsset{
   width=0.8\textwidth,
   height=0.35\textheight,
   grid=major,
   major grid style={dotted},
   symbolic x coords={Janv.,Févr.,Mars,Avril,Mai,Juin,Juil.,Août,Sept.,Oct.,Nov.,Déc.},
   enlarge y limits={upper,value=0.05},
   legend style={
      fill,
      at={(0.50,-0.2)},
      legend columns=2,
      legend cell align=left,
      anchor=north
      },
   }
\begin{tikzpicture}
\begin{axis}[
   xtick pos=left,
   axis y line*=right,
   ybar,
   ymajorgrids,
   bar width=0.13cm,
   ymin=0, ymax=6000,
   ytick={0, 1000, 2000, 3000, 4000, 5000, 6000},
   yticklabels={0, 1000, 2000, 3000, 4000, 5000, 6000},
   ylabel style={align=center},
   ylabel={Nombre de données utilisées\\ pour calculer $T_{LK2}$},
   xtick=data,
   xticklabel style={
      inner sep=0pt,
      anchor=north east,
      rotate=60
      }
   ]
   \addplot[ybar,ybar legend,fill=blue!20] coordinates {
      (Janv.,4219) (Févr.,3438) (Mars,3091)
      (Avril,2884) (Mai,2876) (Juin,5849)
      (Juil.,4514) (Août,3069) (Sept.,5597)
      (Oct.,5506) (Nov.,5406) (Déc.,4873)
      };\label{A}               
   \addplot[ybar,ybar legend,fill=blue!60] coordinates {
      (Janv.,0716) (Févr.,1955) (Mars,3507)
      (Avril,4349) (Mai,4313) (Juin,4423)
      (Juil.,4861) (Août,3128) (Sept.,4550)
      (Oct.,2843) (Nov.,3395) (Déc.,4392)
      };\label{B}                
\end{axis}
\begin{axis}[
   axis y line*=left,
   xticklabels={},
   ymin=1.0, ymax=4,
   ytick={1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0},
   ylabel={Trouble atmosphérique},
   ]
   \addlegendimage{/pgfplots/refstyle=A}
   \addlegendentry{Nombre de données (Golden)}
   \addlegendimage{draw=blue!60,/pgfplots/refstyle=B}
   \addlegendentry{Nombre de données (Perpignan)}
   \addplot[very thick,draw=red!20] plot coordinates{
      (Janv.,1.97)(Févr.,2.05) (Mars,2.25)
      (Avril,2.58) (Mai,2.47) (Juin,2.63)
      (Juil.,2.92) (Août,2.84) (Sept.,2.44)
      (Oct.,2.22) (Nov.,2.07) (Déc.,2.01)
      };
   \addlegendentry{$\langle T_{LK2} \rangle_{mois}$ calculé (Golden)}
   \addplot[very thick,draw=red!90] plot coordinates {
      (Janv.,2.28) (Févr.,2.41) (Mars,2.42)
      (Avril,2.62) (Mai,2.43) (Juin,3.19)
      (Juil.,2.90) (Août,3.04) (Sept.,2.75)
      (Oct.,2.80) (Nov.,2.20) (Déc.,2.31)
      };
   \addlegendentry{$\langle T_{LK2} \rangle_{mois}$ calculé (Perpignan)}
   \end{axis}
\end{tikzpicture}

\end{document}
4
  • Hmmm... The ybar already appeared in the axis options. But repeating it in the \addplot options seems to work though. Weird, but thanks!
    – Bibi
    Jan 5, 2016 at 14:23
  • Also, when I compile, the ylabels are correctly rendered on each side of the figure.
    – Bibi
    Jan 5, 2016 at 14:24
  • Ok, nice then !
    – PMC1234
    Jan 5, 2016 at 14:26
  • Yes indeed 8-).
    – Bibi
    Jan 5, 2016 at 14:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .