PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shade zwischen zwei Graphen



Myri
13-12-2009, 23:09
Hallo an alle,

in meiner aktuellen Arbeit muss ich des Öfteren den Bereich zwischen Graphen markieren (die leider nicht immer so linear verlaufen wie im folgenden Beispiel) und habe das heute noch nicht einmal so geschafft, wie ich es gerne hätte. Hier mein Minimalbeispiel:


\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage{tikz}


\begin{document}

\textbf{So siehts aus:}\\

\begin{tikzpicture}[scale=2]
\draw
plot [id=a,domain=1:4] function{5-x*0.2} node[right]{endet hier...}
plot [id=b,domain=4:1] function{3-x*0.1} node[right]{endet hier...};

\shade[top color=red!10,bottom color=blue!10]
plot [id=a,domain=1:4] function{5-x*0.2} --
plot [id=b,domain=4:1] function{3-x*0.1};

\end{tikzpicture}\\


\textbf{Und so soll es aussehen:}\\

\begin{tikzpicture}[scale=2]
\draw
plot [id=a,domain=1:4] function{5-x*0.2} node[right]{endet hier...}
plot [id=b,domain=4:1] function{3-x*0.1} node[right]{endet hier...};

\shade[top color=red!10,bottom color=blue!10]
(1,4.8) -- (4,4.2) --
(4,2.6) -- (1,2.9);

\end{tikzpicture}

\end{document}

Dass ich beim unteren Graphen domain=4:1 eingegeben habe, dürfte meine Verzweiflung zeigen. Würde der Graph nämlich tatsächlich von x=4 nach x=1 geplottet, würde der gesamte Bereich zwischen beiden Graphen so markiert, wie ich es wollte. Das geht natürlich auf diese Art aber leider nicht...

Hoffe wirklich, dass mir jemand weiterhelfen kann!

Myri
14-12-2009, 10:34
Hey,

vielleicht richte ich meine Frage besser an die mailing list auf Sourceforge:
http://sourceforge.net/mailarchive/forum.php?forum_name=pgf-users

So blöd es klingt, aber die Lösung dieses klitzekleinen Problems ist wirklich wichtig für mich.

Was aber wahrscheinlich noch blöder klingt: Ich habe auf Sourceforge zwar erfolgreich einen Account eröffnet... nur wie "subscribe" ich mich in die Gruppe "pgf-users"?!?!

Seit Eröffnung des Accounts habe ich die zusätzlichen Optionen "Watch" und "Monitor"... nur wo finde ich eine "subscribe"-Möglichkeit, um auch meine Frage posten zu können?!??!

bobmalaria
14-12-2009, 10:55
hi,

guckst du hier https://lists.sourceforge.net/lists/listinfo/pgf-users

Myri
14-12-2009, 11:02
Vielen Dank!! (Schieb mal einfach alles auf den Stress, dass ich es nicht selbst gefunden habe.)


Zu meinem Problem: Die Lösung scheint wirklich darin zu bestehen, einen Graphen "von rechts nach links" zu plotten. Habe Lösungsvorschläge in englischsprachigen Foren gefunden, bei denen das von Hand gemacht wurde. Vielleicht weiß ja doch jemand hier, wie man gnuplot von latex aus automatisch dazu anweisen kann?

In jedem Fall vielen Dank für die Unterstützung hier!!

voss
14-12-2009, 16:52
Zu meinem Problem: Die Lösung scheint wirklich darin zu bestehen, einen Graphen "von rechts nach links" zu plotten. Habe Lösungsvorschläge in englischsprachigen Foren gefunden, bei denen das von Hand gemacht wurde. Vielleicht weiß ja doch jemand hier, wie man gnuplot von latex aus automatisch dazu anweisen kann?


Füllen von Flächen sind mit PSTricks nun wirklich Peamńuts ...

Beispielsweise:
http://tug.org/PSTricks/main.cgi?file=Examples/Box/boxfill
http://tug.org/PSTricks/main.cgi?file=pst-plot/FunctionExamples#shadingbetween

Herbert

Myri
14-12-2009, 19:24
Vielen Dank für den Hinweis!

Werde mich demnächst sicher mit PSTricks beschäftigen (müssen). Das Thema kann an dieser Stelle als geschlossen betrachtet werden.

(Ich hatte mich von den ganzen tikz-Spielereien in die Irre leiten lassen und dachte, die Flächen zwischen Kurven zu markieren (auch, wenn sie mit gnuplot geplottet wurden) sei ein Klacks. Eine Woche vor Abgabe (kommenden Fr) muss ich nun nach 3 Tagen Recherche feststellen, dass das Problem mit pgf/tikz derzeit nicht lösbar ist.

Bin schon seit einigen Stunden dabei, die Berechnungen mit EXCEL zu wiederholen (fast so aufwendig wie die vorherige Berechnung in LaTeX) und die table-Files per Hand zu ändern (was nervt, da sicher noch einige Änderungen vorzunehmen sein werden und dann das entsprechende table-File wieder per Hand geändert werden muss).)

WiKainZwaida
14-12-2009, 22:48
NAbend!

Vielleicht blamier ich mich grade, wenn ich Dich falsche verstehe... Aber Dir fehlen doch nur die Eckpunkte und es würde funktionieren:



\shade[top color=red!10,bottom color=blue!10]
(1,2.9) -- % unten links
plot [id=a,domain=1:4] function{5-x*0.2} --
plot [id=b,domain=4:1] function{3-x*0.1} --
(4,4.2) % oben rechts
;

Myri
15-12-2009, 02:34
Der Hinweis war gut!

Ich habe dank der Option parametric tatsächlich doch noch eine Lösung finden können (kann's kaum erwarten, die morgen... bzw. heute dem "Fachmann" unter die Nase zu halten)!!!

Gespeichert als test.tex funktioniert alles:


\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage{tikz}


\begin{document}

\newcommand{\FunktionOben}[1]{(5-#1*0.2)}
\newcommand{\FunktionUnten}[1]{(3-#1*0.1)}

\newcommand{\vonX}{1}
\newcommand{\bisX}{4}

\begin{tikzpicture}[scale=2]

\draw
plot [id=a,domain=\vonX:\bisX] function{\FunktionOben{x}}
plot [id=b,domain=\vonX:\bisX] function{\FunktionUnten{x}};

\shade[top color=red!10,bottom color=blue!10]
plot [parametric,domain=(\FunktionUnten{\vonX}):(\Funkti onUnten{\vonX}+0.001),id=untenlinks] function{\vonX,t} --
plot file {test.a.table} --
plot file {test.b.table} --
plot [parametric,domain=(\FunktionOben{\bisX}):(\Funktio nOben{\bisX}-0.001),id=ObenRechts] function{\bisX,t};

\end{tikzpicture}

\end{document}