In meinem Dokument habe ich etliche pgfplots Diagramme, deren Achsen alle als Box (beschrifteter Rahmen) dargestellt sind. Bei einem dieser Diagramme möchte ich jetzt zusätzlich unbeschriftete Achsen durch den Koordinatenursprung einzeichnen. Dabei soll der Rahmen einschließlich Beschriftung erhalten bleiben. Wie kann ich das machen?

Open in writeLaTeX
\documentclass[margin=2mm]{standalone} 
\usepackage{pgfplots}
%\pgfplotsset{compat=1.9}%  bei Nutzung von writeLaTeX auskommentieren
\pgfplotsset{samples=200}
\begin{document} 
\begin{tikzpicture} 
  \begin{axis}[domain=-25:25,
      xmin=-25, xmax=+25,xlabel=$\omega$,
      ymin=-0.6, ymax=1.1,ylabel=$y$] 
    \begin{scope}[thin,green,dash pattern=on 2pt off 1pt]
      \addplot [domain=0.1:25] {1/x};\addplot [domain=-25:-0.1] {1/x};
    \end{scope}
    \addplot [blue] {sin(deg(x))/x}; 
  \end{axis} 
\end{tikzpicture} 
\end{document}

alt text

gefragt 25 Jan '14, 18:36

welle's gravatar image

welle
106142631
Akzeptiert-Rate: 0%

bearbeitet 25 Jan '14, 18:38


Es gibt den speziellen Knoten current axis. In Kombination mit den vier Ankern above origin, below origin, left of origin und right of origin kann man dann zwei Geraden zeichnen, die die Achsen repräsentieren.

Open in writeLaTeX
\documentclass[
  11pt,
  border=2pt
]{standalone}
\usepackage[T1]{fontenc}
\usepackage{pgfplots}

\pgfplotsset{
  compat=1.9,
  samples=200
}
\begin{document}
  \begin{tikzpicture}
    \begin{axis}[
      domain=-25:25,
      xmin=-25,
      xmax=+25,
      xlabel=$\omega$,
      ymin=-0.6,
      ymax=1.1,ylabel=$y$
    ]
      \begin{scope}[thin,green,dash pattern=on 2pt off 1pt]
        \addplot[domain=0.1:25] {1/x};
        \addplot[domain=-25:-0.1] {1/x};
      \end{scope}
      \addplot[blue] {sin(deg(x))/x};
      \draw[help lines,dashed] (current axis.above origin) -- (current axis.below origin);
      \draw[help lines,dashed] (current axis.left of origin) -- (current axis.right of origin);
    \end{axis}
  \end{tikzpicture}
\end{document}

Der Stil dieser Linien bleibt letztendlich jedem selbst überlassen.


alt text

Permanenter link

beantwortet 25 Jan '14, 19:35

Thorsten's gravatar image

Thorsten
1.6k325
Akzeptiert-Rate: 58%

Danke, das sieht so aus, wie ich es mir vorgestellt habe. Ich werde aber die beiden \draw Befehle vor den \addplot einfügen, damit die Hilfslinien nicht über die Graphen gezeichnet werden, auch wenn das bei grau gestrichelten Linien kaum auffällt.

(25 Jan '14, 20:00) welle

Eine Ergänzungsfrage: wie kann man rechts und oben an die beiden Achsen Pfeilspitzen hinbekommen?

(26 Jan '14, 11:47) Mossbrucker

@Mossbrucker: Die Seite hier funktioniert etwas anders als Foren. Antworten beziehen sich immer auf die Ausgangsfrage. Deshalb habe ich deine Ergänzungsfrage in einen Kommentar umgewandelt. Schau einfach mal in die FAQ

Um Pfeilspitzen zu erhalten, kannst du \draw[...,-stealth] verwenden.

(26 Jan '14, 12:00) esdd

Eine weitere Möglichkeit: die Werte der Achsenbegrenzungen werden in xmin, ymin, xmax und ymax gespeichert und können mit \pgfkeysvalueof{...} ausgelesen werden für einen \draw-Befehl:

Open in writeLaTeX
\documentclass[margin=2mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\pgfplotsset{samples=200}
\begin{document} 
\begin{tikzpicture} 
  \begin{axis}[domain=-25:25,
      xmin=-25, xmax=+25,xlabel=$\omega$,
      ymin=-0.6, ymax=1.1,ylabel=$y$]
    \draw[help lines, dashed] (axis cs:\pgfkeysvalueof{/pgfplots/xmin},0)
      -- (axis cs:\pgfkeysvalueof{/pgfplots/xmax},0);
    \draw[help lines, dashed] (axis cs:0,\pgfkeysvalueof{/pgfplots/ymin})
      -- (axis cs:0,\pgfkeysvalueof{/pgfplots/ymax});
    \begin{scope}[thin,green,dash pattern=on 2pt off 1pt]
      \addplot [domain=0.1:25] {1/x};\addplot [domain=-25:-0.1] {1/x};
    \end{scope}
    \addplot [blue] {sin(deg(x))/x};
  \end{axis} 
\end{tikzpicture} 
\end{document}

Und noch eine Möglichkeit ist das Arbeiten mit rel axis cs und Schnitten:

Open in writeLaTeX
\documentclass[margin=2mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\pgfplotsset{samples=200}
\begin{document} 
\begin{tikzpicture} 
  \begin{axis}[domain=-25:25,
      xmin=-25, xmax=+25,xlabel=$\omega$,
      ymin=-0.6, ymax=1.1,ylabel=$y$]
      \draw[help lines, dashed] ({rel axis cs:0,0}|-{axis cs:0,0})
        -- ({rel axis cs:1,0}|-{axis cs:0,0});
      \draw[help lines, dashed] ({rel axis cs:0,0}-|{axis cs:0,0})
        -- ({rel axis cs:0,1}-|{axis cs:0,0});
    \begin{scope}[thin,green,dash pattern=on 2pt off 1pt]
      \addplot [domain=0.1:25] {1/x};\addplot [domain=-25:-0.1] {1/x};
    \end{scope}
    \addplot [blue] {sin(deg(x))/x};
  \end{axis} 
\end{tikzpicture} 
\end{document}

Wenn man die Begrenzungen kennt, kann man sie natürlich bei \draw mit axis cs:... selber eintippen, auch für beliebige Linien.

Permanenter link

beantwortet 26 Apr '14, 12:17

stefan's gravatar image

stefan ♦♦
16.7k72845
Akzeptiert-Rate: 51%

Möglichkeiten für beliebige horizontale und vertikale Hilfslinien finden sich auch unter Wie kann ich in pgfplots horizontale oder vertikale Hilfslinien einzeichnen?

(26 Apr '14, 12:24) 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:

×280

gestellte Frage: 25 Jan '14, 18:36

Frage wurde gesehen: 7,135 Mal

zuletzt geändert: 26 Apr '14, 12:24