tikz - Flächen zwischen Kurven

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: tikz - Flächen zwischen Kurven

von bloodworks » Di 15. Dez 2009, 11:51

tata... supi
Schade dass man hier Beiträge nicht blessen kann. grz

von Myri » Di 15. Dez 2009, 03:29

Problem gelöst!

Bloodworks meinte quasi, dass ich ja nur noch die Eckpunkte bräuchte für einen kompletten Pfad. Ich wusste jedoch, dass man über LaTeX mit gnuplot (und das benötige ich in meinen Fällen zur Berechnung der Eckpunkte) keine einzelnen Punkte, sondern nur Funktionen mit mind. 2 Punkten berechnen kann, die noch dazu nebeneinander liegen müssen (dadurch wird der Pfad nicht perfekt, sondern immer etwas verzerrt)...

...AUSSER, man benutzt die Option parametric! Dann sind auch Punkte übereinander (im Bsp. unten mit einem Abstand von 0.001) möglich!

Wahrscheinlich habe ich mich so verwirrend ausgedrückt, dass man gar nicht genau verstehen kann, was ich eigentlich wollte. Dennoch folgt das jetzt endlich funktionierende Minimalbeispiel (bitte als test.tex speichern):
\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}):(\FunktionUnten{\vonX}+0.001),id=untenlinks] function{\vonX,t} --
		plot file {test.a.table} --
		plot file {test.b.table} --
		plot [parametric,domain=(\FunktionOben{\bisX}):(\FunktionOben{\bisX}-0.001),id=ObenRechts] function{\bisX,t};		

\end{tikzpicture}

\end{document}

von Myri » Mo 14. Dez 2009, 22:55

Leider muss man ja auch mit pgfplots auf gnuplot zurückgreifen, sobald man eine Funktion hat, die "etwas" komplizierter ist.

Und die gestapelten Graphen unter 4.5 helfen leider auch nicht weiter...

Dennoch danke für den Hinweis!

von cliffhanger » Mo 14. Dez 2009, 22:32

Schau doch mal die Doku von pgfplots an, speziell Abschnitt 4.5 "Closing Plots".

Pgfplots setzt auf tikz auf und ist speziell zum Plotten von Funktionen und Messwerten entwickelt.

von Myri » Mo 14. Dez 2009, 22:28

In jedem Fall vielen Dank, bloodworks!

von Myri » Mo 14. Dez 2009, 22:27

P.S.:

Meiner Ansicht nach kann es nur zwei Lösungen geben:
- gnuplot irgendwie sagen, die table-Files nach absteigendem x anzulegen
- tikz sagen, bestimmte table-Files "rückwärts" einzulesen (domain 4:1 bringt natürlich nichts in meinem Beispiel, denn der Bereich wird dennoch von x=1 nach x=4 ausgelesen)

Sehe nämlich grade, dass mit den table-Files, die ich bereits entsprechend bearbeitet habe, alles wunderbar und genau so funktioniert, wie ich es brauche.

Leider ist diese Handarbeit im Endeffekt KEINE Lösung, da man von mir ein lauffähiges TeX-File verlangt. Lässt man LaTeX aber komplett durchlaufen, werden ja auch die table-Files wieder neu erstellt...

von bloodworks » Mo 14. Dez 2009, 22:26

Ich kann leider heut abend nimmer drüber schaun. Morgen aber.

von Myri » Mo 14. Dez 2009, 22:10

Vielen Dank für die schnelle Antwort!

Mir ist bewusst, wie shade funktioniert. Um die Problematik klar zu machen, habe ich in den Anhang mein lauffähiges Minimalbeispiel gepackt.

Ersetzt man nun das test.b.table-File durch das test.b.table_neu (also letzteres einfach in das erstere umbennen), funktioniert das shading genau so, wie ich es benötige.

(Dabei sitze ich übrigens seit einigen Stunden: ich ändere die Reihenfolge in den table-Dateien meiner Arbeit (nach x absteigend).)
Dateianhänge
Archiv.zip
(31.83 KiB) 587-mal heruntergeladen

von bloodworks » Mo 14. Dez 2009, 21:52

Seh ich das richtig dass du das mit dem x in dem ersten Plot meinst? Für shade musst du auch einen komplett geschlossenen Pfad angeben. Du musst also von den Enden der KUrven ein Lot fällen. Weisch wenn du
\shade[top color=red!10,bottom color=blue!10]
     plot [id=a,domain=1:4] function{5-x*0.2}-- (4,2.6)   -- plot [id=b,domain=1:4] function{3-x*0.1}--(1,2.9) ;  
machst dann tut das ja

von Myri » Mo 14. Dez 2009, 21:26

P.S.: Im Code meines Minimalbeispiels wurde an einer Stelle aus "8" und ")" ein dämlicher Smilie gemacht.

Nach oben