12

I'm trying to display the tick labels of the y axis of just this graph within my document formatting to two decimal places. I've tried the following code but it seems that it doesn't like the way I'm trying to change the y tick label style, what have I done wrong?

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\pgfplotstableread{Pone.dat}{\Pone}
\begin{center}
\begin{tikzpicture}[scale=0.9]
\begin{axis}[minor tick num=1,xmin=0,xmax=6,ymin=100000, ytick={100000,125000,150000,175000,200000,225000,250000,275000,300000}, y tick label style={/pgf/number format/.cd,fixed,fixed zerofill,precision=2},
xlabel={X}, ylabel={Y},
\addplot [black,thick] table{\Pone};
\end{axis}
\end{tikzpicture}
\end{center}

\end{document}

And just for example, Pone.dat is:

1 100000
2 150000
3 200000
4 210000
5 220000
6 230000
Andy
  • 1,363
  • Sorry, I've added the definition of \Pone and an example of the .dat file it is called from. – Andy Mar 04 '12 at 11:39

1 Answers1

20

Some styles for the tick label placement and the inner sep are set after the user specified styles. If you use /pgf/number format/.cd in your style, this change of directory remains active, and TikZ complains about not finding keys like /pgf/number format/inner sep, which reside in the /tikz directory. You need to .cd back into the /tikz directory (or not use .cd, but use the full /pgf/number format path for all the options).

\documentclass[]{article}
\usepackage{pgfplots}
\begin{document}

\begin{center}
\begin{tikzpicture}[scale=0.9]
\begin{axis}[
    minor tick num=1,
    xmin=0,
    xmax=6,
    ymin=100000,
    ytick={100000, 125000, 150000, 175000, 200000, 225000, 250000, 275000, 300000}, 
    xlabel={X}, ylabel={Y},
    y tick label style={
        /pgf/number format/.cd,
        fixed,
        fixed zerofill,
        precision=2,
        /tikz/.cd
    }
]
\addplot [black,thick] table [row sep=crcr]{
0 150000\\
2 200000\\
};
\end{axis}
\end{tikzpicture}
\end{center}

\end{document}
David Carlisle
  • 757,742
Jake
  • 232,450
  • Thanks Jake, that has worked great in my example. Out of interest is that the 'optimum' way for changing number of decimal places displayed? I found that half code example for changing the decimal places elsewhere, so it's not really obvious to me what the .cd and fixed do, it was only the precision=2 that seemed to suit my needs. – Andy Mar 04 '12 at 12:22
  • Is there any way to do this more "dynamically"? I.e., I have a plot that goes fro 0 to 0.2 on the y axis, and tikz set labels 0, 5*10-2, 0.1, 0.15 , 0.2 which is not very nice at all. But if I "mass produce" plots, some of them will be in y = [0 3e5], and some will be the aforementioned example. Any way to make sure Tikz is consistent on THE SAME Y AXIS (not consistent over multiple plots)? – Clausen Jun 30 '14 at 23:11