4

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?

Daniel F
  • 539
  • 6
  • 14

1 Answers1

6

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

percusse
  • 157,807
  • \pgfplotsset{compat=newest} would be a bit more universal, just to increase compatibility with different versions of pgfplots. – Daniel F Mar 26 '13 at 14:13
  • 1
    @bobb_the_builder It would make your code prone to breakdowns if a new version removes an existing feature. It's a good practice to keep the compat to the version you have made the code. As it happend here just today http://tex.stackexchange.com/questions/104349/add-unit-circle-to-a-plot/104357#104357 :) – percusse Mar 26 '13 at 14:14
  • ouch, sorry, good point! (+1) – Daniel F Mar 26 '13 at 14:25