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, 12:36

welle's gravatar image

welle
10642431
Akzeptiert: 100%

bearbeitet 25 Jan '14, 12: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, 13:35

Thorsten's gravatar image

Thorsten
1.5k325

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, 14:00) welle

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

(26 Jan '14, 05: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, 06: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, 06:17

stefan's gravatar image

stefan ♦♦
5.8k12134

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, 06:24) esdd
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×160

Frage gestellt: 25 Jan '14, 12:36

Frage wurde angeschaut: 2,924 Mal

Zuletzt aktualisiert: 26 Apr '14, 06:24