¿Ayuda con el trazado de escala logarítmica?

¿Ayuda con el trazado de escala logarítmica?

Estoy intentando trazar la complejidad temporal de algunos algoritmos de clasificación utilizando una escala logarítmica. Estoy obteniendo los datos de un archivo de texto insertion.datque contiene la siguiente información:

x y
0 0
10 0.002
100 0.019
1000 1.636
5000 42.735
10000 167.950

y estoy usando el siguiente código para intentar implementarlo:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=15cm,
height=7cm,
axis x line=center,
axis y line=center,
ytick={0,10,100,1000},
xtick={0,10, 1000, 5000,10000},
ymode=log, xmode=log,
xlabel={\texttt{L}},
ylabel={Time (ms)},
xlabel style={right},
ylabel style={above},
xmin=0,
xmax=15000,
ymin=0,
ymax=2000]
\addplot[smooth,red,thick] table[y expr=\thisrow{y}/0.95] {insertion.dat};      
\end{axis}         
\end{tikzpicture}   
\end{document}

Pero el resultado que obtengo es:

ingrese la descripción de la imagen aquí

¿Qué pasa con las hachas? ¿Cómo puedo arreglar esto?

Respuesta1

El principal error es que usas axis y line=centerlo que implica que el eje debe pasar 0, o en el caso de un eje logarítmico 1. Cuando cambia esto a axis y line=lefty al menos el xminvalor, debería obtener el resultado deseado. Pero luego ylabelse coloca a la izquierda en el medio (otra vez). Esto se puede modificar usando la ylabel styleclave.

\begin{filecontents}{insertion.dat}
    x y
    10 0.002
    100 0.019
    1000 1.636
    5000 42.735
    10000 167.950
\end{filecontents}
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
    \pgfplotsset{compat=1.13}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            xmode=log,
            ymode=log,
            %
            width=15cm,
            height=7cm,
            axis x line=center,
            axis y line=left,   % <-- `center' confuses PGFPlots on a log axis
            xmin=5,
            xmax=15000,
            ymin=1e-3,
            ymax=2000,
            xlabel={\texttt{L}},
            ylabel={Time (ms)},
            xlabel style={right},
            ylabel style={
                at={(rel axis cs:0,1)},
                rotate=-90,
                anchor=south,
            },
        ]
            \addplot [smooth,red,thick,mark=*]
                table [y expr=\thisrow{y}/0.95] {insertion.dat};
        \end{axis}
    \end{tikzpicture}
\end{document}

imagen que muestra el resultado del código anterior

información relacionada