[Tex/LaTex] How to make logarithmic axes through the origin

pgfplots

I have this graph:

sin(1/x)

The x-axis looks like it should look like:

  • arrow head at its end
  • label near the arrow head
  • it goes through the origin

But the y-axis does strange things:

  • It does not go through the origin
  • no arrow head
  • it is at the end of the arrow head of the x-axis.

I don't need the y-axis to go exactly at through origin, but it should be at the left side of the plot. Also it would be nice if the line of the y-axis was a little bit longer than [-1, 1], e.g. [-1.2, 1.2].

How can I change to y-axis to look look like this?

Here is the LaTeX-Code:

\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
\setlength\PreviewBorder{2mm}

\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{arrows, positioning, calc}

\begin{document}
\begin{preview}

\begin{tikzpicture}
    \begin{axis}[
        axis x line=middle,
        xmode=log, % Logarithmic x axis
        xmin=0.01, xmax=1, % Positive domain...
        xticklabel=\pgfmathparse{exp(\tick)}\pgfmathprintnumber{\pgfmathresult},
        xticklabel style={/pgf/number format/.cd,fixed}, % Use fixed point notation
        width=15cm, height=8cm,     % size of the image
        grid = major,
        grid style={dashed, gray!30},
        ymin=-1,      % start the diagram at this y-coordinate
        ymax= 1,      % end   the diagram at this y-coordinate
        axis background/.style={fill=white},
        ylabel=y,
        xlabel=x,
        legend style={at={(0.9,0.95)}, anchor=north}
     ]
      \addplot[domain=0.01:1, red, thick,samples=2000] {-sin(deg(1/(x)))};
      \legend{$\sin(\frac{1}{x})$}
    \end{axis} 
\end{tikzpicture}
\end{preview}
\end{document}

Best Answer

The y axis is still set to its default (vertical lines at the left and right edge of the plot), while you changed the x axis style to middle. If you set axis y line=left, you'll get the y axis at the left edge of the plot. For making the axis a bit longer, you can set enlarge y limits=true.

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{arrows, positioning, calc}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        axis x line=middle,
        axis y line=left,
        enlarge y limits=true,
        xmode=log, % Logarithmic x axis
        xmin=0.01, xmax=1, % Positive domain...
        xticklabel=\pgfmathparse{exp(\tick)}\pgfmathprintnumber{\pgfmathresult},
        xticklabel style={/pgf/number format/.cd,fixed}, % Use fixed point notation
        width=15cm, height=8cm,     % size of the image
        grid = major,
        grid style={dashed, gray!30},
        ymin=-1,      % start the diagram at this y-coordinate
        ymax= 1,      % end   the diagram at this y-coordinate
        axis background/.style={fill=white},
        ylabel=y,
        xlabel=x,
        legend style={at={(0.9,0.95)}, anchor=north}
     ]
      \addplot[domain=0.01:1, red, thick,samples=2000] {-sin(deg(1/(x)))};
      \legend{$\sin(\frac{1}{x})$}
    \end{axis} 
\end{tikzpicture}
\end{document}