Den Y-Achsenbereich eines Diagramms in einigen Teilen mit mehr Werten versehen

Den Y-Achsenbereich eines Diagramms in einigen Teilen mit mehr Werten versehen

Für das folgende MWE:

\documentclass{report}
\usepackage[left=2.5cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage{pgfplots}


\begin{document}

\begin{figure}[H]
\begin{tikzpicture}
\begin{axis}[%
scaled y ticks = true,
width=1*\textwidth,
height=8cm,
xlabel={Query $\#$},
ylabel={Elapsed Time (in seconds)},
grid=both,
minor x tick num=5,
minor y tick num=5,
enlarge x limits=0,
legend entries={Original, byHalf, Random, Hybrid},
scaled x ticks = true
]
\addplot [
color=blue,mark=x,
solid,
line width=1.0pt
]
coordinates{
(0,39.0819) (1,2292) (2,4484.82) (3,6057.37) (4,38.3475) (5,15.4616) (6,38.5286) (7,15.411) (8,38.3627) (9,14.8773) (10,15.4079) (11,38.8762) (12,20.9027) (13,35.6657) 
};

\addplot [
color=red,mark=x,
solid,
line width=1.0pt
]
coordinates{
(0,38.9575) (1,2720.19) (2,1929.3) (3,1677.22) (4,111.165) (5,68.6833) (6,94.4457) (7,76.0591) (8,94.0201) (9,109.844) (10,78.6465) (11,91.7805) (12,12.9179) (13,78.6684) 
};


\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}

Wenn Sie es kompilieren, werden Sie sehen, dass der letzte Teil des Diagramms so aussieht, als würden sich die Linien berühren und sie sehen aus, als wären sie gleich, aber tatsächlich liegen etwa 50 Sekunden zwischen ihnen. Dies liegt daran, dass die Ticks der Y-Achse (automatisch) in Schritten von 1000 vorrücken.

Wie kann ich das steuern? Ist es möglich, es zunächst in 100er-Schritten laufen zu lassen und dann, wenn 1000 erreicht ist, auf 1000er-Schritte umzuschalten?

Antwort1

Die Achsen, die Sie derzeit verwenden, sind linear. Das bedeutet, wenn Sie weitere Punkte zwischen 0 und 1000 hinzufügen, fügen Sie lediglich weitere Linien und Beschriftungen im gleichen Abstand hinzu (der Abstand zwischen 0 und 1000 bleibt derselbe).

Um die Unterschiede zwischen 0 und 1000 hervorzuheben, können Sie eine logarithmische Skala verwenden. Bei einer logarithmischen Skala ist der Abstand zwischen 0 und 10 der gleiche wie der Abstand zwischen 10 und 100 oder 100 und 1000 (und so weiter).

Ihr Beispiel sieht mit einer logarithmischen Y-Achse folgendermaßen aus:

Bildschirmfoto

\documentclass{report}
\usepackage[left=2.5cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage{pgfplots}


\begin{document}

\begin{figure}[H]
  \begin{tikzpicture}
    \begin{semilogyaxis}[%
      width=1*\textwidth,
      height=8cm,
      xlabel={Query $\#$},
      ylabel={Elapsed Time (in seconds)},
      grid=both,
      enlarge x limits=0,
      legend entries={Original, byHalf, Random, Hybrid},
      scaled x ticks = true
    ]
    \addplot [color=blue,mark=x,solid,line width=1.0pt]
      coordinates{
        (0,39.0819) (1,2292) (2,4484.82) (3,6057.37) (4,38.3475) (5,15.4616) (6,38.5286) (7,15.411) (8,38.3627) (9,14.8773) (10,15.4079) (11,38.8762) (12,20.9027) (13,35.6657) 
   };

    \addplot [color=red,mark=x,solid,line width=1.0pt]
      coordinates{
       (0,38.9575) (1,2720.19) (2,1929.3) (3,1677.22) (4,111.165) (5,68.6833) (6,94.4457) (7,76.0591) (8,94.0201) (9,109.844) (10,78.6465) (11,91.7805) (12,12.9179) (13,78.6684) 
    };
  \end{semilogyaxis}
\end{tikzpicture}
\end{figure}

\end{document}

Anstatt

\begin{semilogyaxis} 
...
\end{semilogyaxis}

Sie können auch verwenden

\begin{axis}[xmode=normal,ymode=log]
...
\end{axis}

Weitere Einstellungen und Informationen finden Sie impgfplots(Seite 16-19).

verwandte Informationen