PGFPLOTS - bekomme maximale Abweichung zwischen zwei Plots

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: PGFPLOTS - bekomme maximale Abweichung zwischen zwei Plots

von esdd » Di 3. Mai 2016, 23:40

Seit pgfplots Version 1.11 ist übrigens axis cs das Standardkoordinatensystem innerhalb der axis Umgebung. Selbst bei Overleaf (derzeit immer noch 1.12) darf man axis cs: also weglassen. Gibt man es trotzdem an, ist das natürlich auch kein Problem.

Zwei Varianten für die Markierung

von Stamm- » Di 3. Mai 2016, 18:23

Das absolute (oder globale) Maximum wie angegeben kann ich jetzt nicht erkennen. Deshalb habe ich mal die beiden lokalen Maxima markiert. Sollte das nicht dem gewünschten Ergebnis entsprechen, lässt sich das leicht anpassen.

Es gibt da zwei Möglichkeiten, die ihren Ursprung in »PGF/TikZ« haben (auf dem »pgfplots« ja basiert). Das ist dann entsprechend in der Anleitung nachzulesen (Kapitel 17).
  1. Mit \node und der Option pin eine Art Stecknadel an der entsprechenden Stelle des Graphen setzen (s. Abschnitt 17.10.3).
  2. Mit \draw von der zu kennzeichnenden Stelle des Graphen aus eine Linie zu einem Knoten (node) zeichnen und dort die gewünschte Markierung setzen.
Beides ist in diesem Beispiel enthalten. Wichtig ist, das zur richtigen Ausrichtung der Markierungen und somit zum Zeichnen der Verbindungslinien das Koordinatensystem der Achsenumgebung (axis cs) verwendet werden sollte.
\documentclass[11pt,border=2pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage{selinput}        % Ersatz für »ìnputenc«
\SelectInputMappings{        % Halbautomatische Festlegung der
  adieresis={ä},             % Eingabekodierung mit Hilfe
  germandbls={ß}             % ausgewählter Sonderzeichen
}                            % siehe: http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
                             % oder: http://partners.adobe.com/public/developer/en/opentype/aglfn13.txt
\usepackage[ngerman]{babel}

\usepackage{pgfplots}
\pgfplotsset{
  compat=1.13,               % 1.12 für 'Overleaf'
  xlabel near ticks,
  ylabel near ticks
}

\begin{document}
  \begin{tikzpicture}[>=stealth]
    \begin{axis}[
      font=\footnotesize,
      xmin=0,
      xmax=8,
      xtick={0,1,...,8},
      ymin=-1,
      ymax=4
    ]
      \addplot+[mark=none,color=black] table {
        x y
        1 2
        2 1
        3 3
        4 2
        5 1
        6 2
        7 0.5
      };
      \node[pin=90:Maximum] at (axis cs:1,2) {};
      \node[pin=45:Maximum] at (axis cs:3,3) {};
      \addplot+[mark=none,color=blue,stack plots=y] table {
        x y
        1 2.1
        2 0.9
        3 3.1
        4 2.02
        5 1.01
        6 2.0
        7 0.512
      };
      \addplot+[color=red,stack plots=y,stack dir=minus]table {
        x y
        1 2
        2 1
        3 3
        4 2
        5 1
        6 2
        7 0.5
      };
%      \node[pin=280:Maximum] at (axis cs:1,0.15) {};
%      \node[pin=45:Maximum] at (axis cs:3,0.15) {};
      \draw[<-,shorten >=5pt,shorten <=2pt] (axis cs:1,0.15) -- (axis cs:1.5,0.5) node {Maximum};
      \draw[<-,shorten >=13pt,shorten <=2pt] (axis cs:3,0.15) -- (axis cs:4.5,0.5) node {Maximum};
    \end{axis}
  \end{tikzpicture}
\end{document}

Minimalbeispiel ergänzt

von Avernus » Mo 2. Mai 2016, 13:10

Ok. Das stimmt mit Beispiel ist es deutlich anschaulicher.



\documentclass[article]{article}
\usepackage[ngerman]{babel}

\usepackage{tikz,pgfplots}
\usetikzlibrary{patterns,snakes}
\usetikzlibrary{arrows,automata}

\usepackage{filecontents}

\usetikzlibrary{shapes,positioning}

\begin{document}


\begin{figure}
\begin{center}
\begin{tikzpicture}

\begin{axis}
\addplot+[mark=none,color = black] table {
x y
1 2
2 1
3 3
4 2
5 1
6 2
7 0.5

};

\addplot+[mark=none,color = blue,stack plots=y] table {
x y
1 2.1
2 0.9
3 3.1
4 2.02
5 1.01
6 2.0
7 0.512

};

\addplot +[color=red,stack plots=y,stack dir =minus]table {

x y
1 2
2 1
3 3
4 2
5 1
6 2
7 0.5


};


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

\end{document}
An dem roten Plot würde ich das absolute Maximum(|-10|> 8 ) kennzeichnen und den jeweiligen Wert dazu schreiben.

Alternativ kann ich mir auch vorstellen den roten Plot wegzulassen und die Differenz bei den beiden oberen Plots direkt einzuzeichnen.

Danke.[/img]
Dateianhänge
Unbenannt.PNG
Unbenannt.PNG (32.75 KiB) 2025 mal betrachtet

Das kommt darauf an

von Stamm- » Fr 29. Apr 2016, 17:32

Avernus hat geschrieben:[…] Hat jemand einen Vorschlag wie das machbar ist? […]
Mit einem brauchbaren Beispiel wird sich bestimmt jemand mit einem Vorschlag zur Lösung finden.

PGFPLOTS - bekomme maximale Abweichung zwischen zwei Plots

von Avernus » Fr 29. Apr 2016, 14:13

Hallo,



ich habe mit den Befehlen "stack plots=y" und "stack dir=minus" die Differenz von zwei Plots gezeichnet. Gerne würde ich in diesem Plot den maximal Wert (absolut) markieren.
\addplot +[stack plots=y] table {testfile.dat};
\addplot +[stack plots=y,stack dir =minus]table {file.dat};
Hat jemand einen Vorschlag wie das machbar ist?

Vielen Dank.

Grüße

Nach oben