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?

2

1 Answer 1

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

3
  • \pgfplotsset{compat=newest} would be a bit more universal, just to increase compatibility with different versions of pgfplots.
    – Daniel F
    Commented Mar 26, 2013 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 tex.stackexchange.com/questions/104349/… :)
    – percusse
    Commented Mar 26, 2013 at 14:14
  • ouch, sorry, good point! (+1)
    – Daniel F
    Commented Mar 26, 2013 at 14:25

You must log in to answer this question.

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