Ich habe mehrere Linien in einem Diagramm erstellt. Wie kann ich jetzt die Schnittpunkte finden lassen (müssen nicht markiert werden) um diese dann als Grundlage für einen neuen Plot zu benutzen? Das Ziel ist eine einhüllende zu generieren und diese dann mit einer Farbe zu füllen (das krieg ich inzwischen hin). Hier mein Beispiel:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass{scrreprt}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\centering
\begin{axis}
[
width=15cm,
title=V-n,
xlabel={equivalent Airspeed [kts]},
ylabel={Load Factor},
ymin=0, ymax=5,
xmin=0, xmax=100
]
\addplot [blue,domain=0:100]{(1.2*1.225*23)/(2*2525.15*9.81)*x^2};
\addplot [red] coordinates{(0,4.4)(330,4.4)};
\addplot [dashed]coordinates {(74.41,0)(74.41,6)}node[pos=0.15,right]{$V_S$};
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Mein ziel ist es, die Schnittpunkte zwischen der Kurve und der roten Linie sowie der kurve und der gestrichelten Linie zu finden und zwischen den beiden Punkten, entlang der Kurve, eine neue Linie zu plotten. Geht das überhaupt?

alt text

gefragt 24 Dez '15, 13:23

Sean1978's gravatar image

Sean1978
4112
Akzeptiert-Rate: 0%

bearbeitet 25 Dez '15, 02:05

esdd's gravatar image

esdd
17.8k294257

Prinzipiell mit der intersections-Bibliothek für tikz wie in der Antwort auf "TikZ Kurve durch Schnittpunkte zeichnen" gezeigt. Man kan die Punkte dann verwendet, um sie zu markieren oder davon ausgehend neue Kurven zeichnet oder ihnen irgendwelche Namen geben.

(24 Dez '15, 14:52) saputello

Im Prinzip ist das genau was ich brauche... Kennt nur jemand evtl. ein Beispiel welches mehr zu meinem passt? Ich komme damit gar nicht klar irgendwie. Oder kennt vielleicht jemand so etwas wie ein Handbuch?

(24 Dez '15, 16:23) Sean1978

Ok, habe dann doch noch selber gefunden und verstanden. Für alle die vor dem selben Problem stehen, dieser link hat mir weiter geholfen: link text

(24 Dez '15, 17:12) Sean1978

Ich habe Deine "Antworten" in Kommentare umgewandelt. Hier sind Antworten stets "echte" Antworten, keine Gespräche oder Rückfragen oder Zusatzinfos, sondern Lösungen. Das verbessert die Übersicht erheblich für die Archivierung der Lösungen. Ungewohnt und anders als in Webforen, doch innovativ und nutzbarer. Bemerkungen gern wie hier als Kommentare. Außerdem habe ich noch die Markdown-Syntax in Deiner Frage korrigiert. Bitte stets Markdown statt HTML-Tags verwenden. Dann funktionieren auch die Backslashs und im Idealfall sogar der Online-Editor-Link.

(24 Dez '15, 17:25) saputello

Du darfst Deine gefundene Lösung auch gerne als Antwort auf Deine eigene Frage posten. Das ist hier ausdrücklich erwünscht!

(24 Dez '15, 17:28) saputello

Ich verwende im folgenden ein anderes Beispiel bei dem deutlicher wird, bei dem der Ausgangsplot in dem betroffenen Bereich nicht so einfach durch eine Gerade angenähert werden kann. Dafür lasse ich alles für das Problem nicht wichtige weg:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
ymin=-1, ymax=4,
xmin=0, xmax=4
]
\addplot[name path=b,blue,domain=0:4]{(x/2)^2};
\draw (current axis.left of origin)--(current axis.right of origin);
\draw [red] foreach \y/\name in {-.5/unten,2/oben}
{(0,\y-|current axis.west)--
(0,\y-|current axis.east)coordinate(\name)};
\draw [dashed] foreach \x/\t/\name in {1.5/S/links,3.5/D/rechts}
{(\x,0|-current axis.south)--
(\x,0|-current axis.north)node[pos=.05,right]{$V_\t$}coordinate(\name)};
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Wenn ich Dich richtig verstehe, dann hättest Du gern das in der folgenden Zeichnung orange Stücke des Plots, dass zwischen den Schnittpunkten des Plots mit der grünen Linie liegt:

alt text

Die grüne Linie entspricht dem Pfad

Open in Online-Editor
\path[name path=r](unten-|links)--(oben-|links)--(oben-|rechts);
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

den ich auch gleich benannt habe. Um das Stück zwischen den Schnittpunkten dieses Pfades mit dem Plot zu markieren, lässt sich intersection segments={of=b and r,sequence={L2}} verwenden. Dabei werden die Schnittpunkte zwischen den beiden Pfaden b und r ermittelt. Diese Schnittpunkte werden anschließend verwendet, um die Pfade in Segmente aufzuteilen. Dabei werden die Segmente des ersten Pfades mit dem Buchstaben L und die des zweiten mir R bezeichnet. Hinter dem Buchstaben steht dann noch die Nummer des Segmentes. Der oben orange eingezeichnete Teil ist das zweite Segment des ersten Pfades und heißt deshalb L2.

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
ymin=-1, ymax=4,
xmin=0, xmax=4
]
\addplot[name path=b,blue,domain=0:4]{(x/2)^2};
\draw (current axis.left of origin)--(current axis.right of origin);
\draw [red] foreach \y/\name in {-.5/unten,2/oben}
{(0,\y-|current axis.west)--
(0,\y-|current axis.east)coordinate(\name)};
\draw [dashed] foreach \x/\t/\name in {1.5/S/links,3.5/D/rechts}
{(\x,0|-current axis.south)--
(\x,0|-current axis.north)node[pos=.05,right]{$V_\t$}coordinate(\name)};
\path[name path=r](unten-|links)--(oben-|links)--(oben-|rechts);
\draw[orange,thick,
intersection segments={of=b and r,sequence={L2}}
];
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

liefert

alt text

Wenn ich es richtig mitbekommen habe, möchtest Du aber eigentlich so etwas haben wie

alt text

Dafür kannst Du dann

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\fill[blue,opacity=.25,
intersection segments={of=b and r,sequence={R1--L2--R3}}
]--(unten-|rechts)--cycle;
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

nutzen, wobei R1 das erste Segment von r ist, L2 wieder das zweite von b und R3 das dritte von r.

Code:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
ymin=-1, ymax=4,
xmin=0, xmax=4
]
\addplot[name path=b,blue,domain=0:4]{(x/2)^2};
\draw (current axis.left of origin)--(current axis.right of origin);
\draw [red] foreach \y/\name in {-.5/unten,2/oben}
{(0,\y-|current axis.west)--
(0,\y-|current axis.east)coordinate(\name)};
\draw [dashed] foreach \x/\t/\name in {1.5/S/links,3.5/D/rechts}
{(\x,0|-current axis.south)--
(\x,0|-current axis.north)node[pos=.05,right]{$V_\t$}coordinate(\name)};
\path[name path=r](unten-|links)--(oben-|links)--(oben-|rechts);
\fill[blue,opacity=.25,
intersection segments={of=b and r,sequence={R1--L2--R3}}
]--(unten-|rechts)--cycle;
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 25 Dez '15, 03:14

esdd's gravatar image

esdd
17.8k294257
Akzeptiert-Rate: 62%

Hier meine Lösung.

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[12pt,titlepage,footsepline,headsepline]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage[a4paper,lmargin={4cm},rmargin={2.5cm},tmargin={3cm},bmargin={3cm}]{geometry}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\centering
\begin{axis}
[
width=15cm,
title=V-n-Manöverdiagramm,
xlabel={equivalent Airspeed [kts]},
ylabel={Load Factor},
ymin=-3, ymax=5,
xmin=0, xmax=330,
transpose legend,
legend columns=2,
legend cell align=left,
legend entries={ pos. Lift,
neg.Lift,
max. Load (+/-)},
legend style={at={(0.5,-0.15)},anchor=north},
]
%Hier werden die Linien gezeichnet und mit Namen versehen
\addplot [name path=b,blue,domain=0:100]{(1.2*1.225*23)/(2*2525.15*9.81)*x^2};
\addplot [name path=c,cyan,domain=0:100]{-(0.9*1.225*23)/(2*2523.15*9.81)*x^2};
\addplot [name path=ro,red] coordinates{(0,4.4)(330,4.4)};
\addplot [name path=ru,red] coordinates{(0,-1.76)(330,-1.76)};
\addplot [name path=vs,dashed]coordinates {(74.41,-4)(74.41,6)}node[pos=0.15,right]{$V_S$};
\addplot [name path=vd,dashed]coordinates{(232.47,-4)(232.47,6)}node[pos=0.15,right]{$V_D$};
\addplot [solid]coordinates{(0,0)(330,0)};
%Jetzt werden die Schnittpunkte berechnet und als Koordinaten verwurstet
\path [name intersections={of=b and vs}];
\coordinate (bvs) at (intersection-1);
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Das ganze sieht dann so aus: alt text

Permanenter link

beantwortet 24 Dez '15, 22:30

Sean1978's gravatar image

Sean1978
4112
Akzeptiert-Rate: 0%

bearbeitet 25 Dez '15, 02:20

esdd's gravatar image

esdd
17.8k294257

Deine Antwort
[Vorschau ausblenden]

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

Frage-Themen:

×731
×298

gestellte Frage: 24 Dez '15, 13:23

Frage wurde gesehen: 8,742 Mal

zuletzt geändert: 25 Dez '15, 03:14

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×