[Tex/LaTex] PGFplots axis scale and value manipulation

pgfplots

I'm a tikz-pgf beginner and try to do two simple things:

  1. i have x-values between 2^20 and 2^30 (the size, always a power of two). How can i modify the xticks respectivly (not having a power of ten)?
  2. each and very y-value should be divided by (size/1024) automatically
    (in gnuplot it would look like: ($8):($9/($8/1024)), iff $8:=size and $9:=time)

My minimal code example looks like:

    \documentclass{minimal}
    \usepackage{pgfplots}
    \begin{document}

    \begin{tikzpicture}
    \begin{axis} [
      xmode = log,
      xlabel=size in bytes,
      ylabel=time in $\frac{s}{KiB}$ 
      ]

      \pgfplotstableread{datafile}
      \datatable

      \addplot table[x = size, y = time] from \datatable ;

    \end{axis}
    \end{tikzpicture}

    \end{document}

What's the simplest way to do this?

Best Answer

You can use the log basis x key to define the logarithm with respect to 2.

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{document}

\begin{tikzpicture}
\begin{axis} [
  xmode = log,
  log basis x=2,
  xlabel=size in bytes,
  ylabel=time in $\frac{s}{KiB}$ 
  ]

  %\pgfplotstableread{datafile}
  %\datatable

  \addplot table[x = size, y expr= \thisrow{time}/(\thisrow{size}/1024)] {
size time 
1048576   1024
8388608   2048
67108864  4096
536870912 8192
};
\end{axis}
\end{tikzpicture}

\end{document}

enter image description here

Related Question