Wenn ich die x-ticks ändere (im Beispiel von 20er Abstand auf 10er Abstand), verändere ich auch automatisch das grid. Wie kann man bei TikZ das grid unabhängig von den ticks zeichnen, so dass das Grid alle 10 Einheiten und die ticks alle 20 Einheiten gezeichnet werden?

alt text

Open in Online-Editor
\documentclass{scrartcl} 
\usepackage{tikz,pgfplots}
\pgfplotsset{width=8cm,height=6cm}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
%zeichnen allgemeine funktionen
%einstellungen für das koordinatensystem
    axis x line=middle, %position der x-achse bottom, middle, top, none
    axis y line=middle, %position der y-achse right, middle, left, none
    xlabel={$t$}, %x-achsenbeschriftung
    ylabel={$v$}, %y-achsenbeschriftung
    x=0.1cm,    %größe der kästchen in x-richtung
    y=0.5cm,    %größe der kästchen in y-richtung
    grid =major, %zeichnet rechenkästchen in der x- und y-achse
    xtick={0,20,...,120}, % x-achsenskalierung
    ytick={-5,-3,...,15}, % y-achsenskalierung
    xmin=0,  % definitionsbereich minimumwert
    xmax=115,   % definitionsbereich maximumwert
    ymin=-6.5,  % wertebereich minimumwert
    ymax=16.5,   % wertebereich maximumwert
    scale = 0.7   % vergrößerungsfaktor    
    ]
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[
%zeichnen allgemeine funktionen
%einstellungen für das koordinatensystem
    axis x line=middle, %position der x-achse bottom, middle, top, none
    axis y line=middle, %position der y-achse right, middle, left, none
    xlabel={$t$}, %x-achsenbeschriftung
    ylabel={$v$}, %y-achsenbeschriftung
    x=0.1cm,    %größe der kästchen in x-richtung
    y=0.5cm,    %größe der kästchen in y-richtung
    grid =major, %zeichnet rechenkästchen in der x- und y-achse
    xtick={0,10,...,120}, % x-achsenskalierung
    ytick={-5,-3,...,15}, % y-achsenskalierung
    xmin=0,  % definitionsbereich minimumwert
    xmax=115,   % definitionsbereich maximumwert
    ymin=-6.5,  % wertebereich minimumwert
    ymax=16.5,   % wertebereich maximumwert
    scale = 0.7   % vergrößerungsfaktor    
    ]
\end{axis}
\end{tikzpicture}

\end{document}

gefragt 19 Aug '15, 21:05

typ42's gravatar image

typ42
38341927
Akzeptiert-Rate: 33%


Für das konkrete Beispiel wäre eine einfache Möglichkeit grid=both zu verwenden und mit minor x tick num=1 jeweils einen Zwischentick zu setzen, der mit der Option subtickwidth=0pt nicht gezeichnet wird.

alt text

Code:

Open in Online-Editor
\documentclass{scrartcl} 
\usepackage{tikz,pgfplots}
\pgfplotsset{width=8cm,height=6cm,
  compat=newest % derzeit aktuelle Version wäre 1.12
}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
%zeichnen allgemeine funktionen
%einstellungen für das koordinatensystem
    axis x line=middle, %position der x-achse bottom, middle, top, none
    axis y line=middle, %position der y-achse right, middle, left, none
    xlabel={$t$}, %x-achsenbeschriftung
    ylabel={$v$}, %y-achsenbeschriftung
    x=0.1cm,    %größe der kästchen in x-richtung
    y=0.5cm,    %größe der kästchen in y-richtung
    grid =both,
    minor x tick num=1,
    subtickwidth=0pt,
    xtick={0,20,...,120}, % x-achsenskalierung
    ytick={-5,-3,...,15}, % y-achsenskalierung
    xmin=0,  % definitionsbereich minimumwert
    xmax=115,   % definitionsbereich maximumwert
    ymin=-6.5,  % wertebereich minimumwert
    ymax=16.5,   % wertebereich maximumwert
    scale = 0.7   % vergrößerungsfaktor    
    ]
\end{axis}
\end{tikzpicture}
\end{document}

Man kann aber auch mit set layers die Verwendung der Standardlayer aktivieren und dann im axis grid Layer eigene Gitterlinien zeichnen, die vollkommen unabhängig von den Positionen der Ticks sind. Damit das deutlich wird, habe ich im Folgenden die Ticks auf der x-Achse unregelmäßig verteilt.

alt text

Code:

Open in Online-Editor
\documentclass{scrartcl} 
\usepackage{tikz,pgfplots}
\pgfplotsset{width=8cm,height=6cm,
  compat=newest % derzeit aktuelle Version wäre 1.12
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[set layers,
%zeichnen allgemeine funktionen
%einstellungen für das koordinatensystem
    axis x line=middle, %position der x-achse bottom, middle, top, none
    axis y line=middle, %position der y-achse right, middle, left, none
    xlabel={$t$}, %x-achsenbeschriftung
    ylabel={$v$}, %y-achsenbeschriftung
    x=0.1cm,    %größe der kästchen in x-richtung
    y=0.5cm,    %größe der kästchen in y-richtung
    ymajorgrids=true,
    xtick={0,15,50,80,105}, % x-achsenskalierung
    ytick={-5,-3,...,15}, % y-achsenskalierung
    xmin=0,  % definitionsbereich minimumwert
    xmax=115,   % definitionsbereich maximumwert
    ymin=-6.5,  % wertebereich minimumwert
    ymax=16.5,   % wertebereich maximumwert
    scale = 0.7,   % vergrößerungsfaktor    
    set layers
    ]
% Zeichnen der x-Gitterlinien
\pgfplotsinvokeforeach {5,10,...,115}{
  \pgfonlayer{axis grid}
    \draw[green!50](#1,0|-current axis.south)--(#1,0|-current axis.north);
  \endpgfonlayer
}
\end{axis}
\end{tikzpicture}
\end{document}

Das Ganze lässt sich dann auch auf die y-Gitterlinien übertragen, in dem man zum Beispiel den folgenden Code ergänzt und gegebenenfalls ymajorgrids=true entfernt:

Open in Online-Editor
% Zeichnen der y-Gitterlinien
\pgfplotsinvokeforeach {-6,-5,...,16}{
  \pgfonlayer{axis grid}
    \draw[orange!50](0,#1-|current axis.west)--(0,#1-|current axis.east);
  \endpgfonlayer
}

(0,#1-|current axis.west) bezeichnet dabei den Schnittpunkt der horizontalen Linie durch den Punkt (0,#1) und der vertikalen Linie durch den Punkt (current axis.west).

alt text

Code:

Open in Online-Editor
\documentclass{scrartcl} 
\usepackage{tikz,pgfplots}
\pgfplotsset{width=8cm,height=6cm,
  compat=newest % derzeit aktuelle Version wäre 1.12
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[set layers,
%zeichnen allgemeine funktionen
%einstellungen für das koordinatensystem
    axis x line=middle, %position der x-achse bottom, middle, top, none
    axis y line=middle, %position der y-achse right, middle, left, none
    xlabel={$t$}, %x-achsenbeschriftung
    ylabel={$v$}, %y-achsenbeschriftung
    x=0.1cm,    %größe der kästchen in x-richtung
    y=0.5cm,    %größe der kästchen in y-richtung
    %grid=major,
    xtick={0,15,50,80,105}, % x-achsenskalierung
    ytick={-5,-3,...,15}, % y-achsenskalierung
    xmin=0,  % definitionsbereich minimumwert
    xmax=115,   % definitionsbereich maximumwert
    ymin=-6.5,  % wertebereich minimumwert
    ymax=16.5,   % wertebereich maximumwert
    scale = 0.7,   % vergrößerungsfaktor    
    set layers
    ]
% Zeichnen der x-Gitterlinien
\pgfplotsinvokeforeach {5,10,...,115}{
  \pgfonlayer{axis grid}
    \draw[green!50](#1,0|-current axis.south)--(#1,0|-current axis.north);
  \endpgfonlayer
}
    % Zeichnen der y-Gitterlinien
    \pgfplotsinvokeforeach {-6,-5,...,16}{
      \pgfonlayer{axis grid}
        \draw[orange!50](0,#1-|current axis.west)--(0,#1-|current axis.east);
      \endpgfonlayer
    }
\end{axis}
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 19 Aug '15, 22:19

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 19 Aug '15, 23:43

Ja, dein letztes allgemeines Beispiel ist gut. Ich komme aber nicht ganz mit deinem Befehl klar. Die #1 wird durch 5,10... ersetzt und somit wird jeweils der x-Wert verändert. Was genau bewirkt aber das current axis.south und north und muss man dann für die y-Gitterlinien west und east nehmen?

(19 Aug '15, 23:00) typ42
1

@typ42 Ich habe das Beispiel noch auf y-Gitterlinien erweitert.

(19 Aug '15, 23:44) esdd
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×3

gestellte Frage: 19 Aug '15, 21:05

Frage wurde gesehen: 16,929 Mal

zuletzt geändert: 19 Aug '15, 23:44