3dplot mit tikz
-
- Forum-Anfänger
- Beiträge: 36
- Registriert: Do 22. Sep 2011, 12:06
- Wohnort: Berlin
3dplot mit tikz
Hallo,
ich möchte einen 3dplot mit tikz erzeugen und brauche dazu die Hilfe von Experten. Sachlich geht es um die Darstellung der zeitlichen Entwicklung so genannter Zinsstrukturkurven. Eine Zinsstrukturkurve beschreibt die an einem bestimmten Tag geltenden Zinssätze für Laufzeiten von 1 bis 30 Jahren. Wenn man die Zinssätze in Abhängigkeit von der Laufzeit und dem aktuellen Datum grafisch darstellen will, hat man es also mit einer Funktion zu tun, die von zwei Veränderlichen (Laufzeit, aktuelles Datum) abhängt. Daher mein Interesse an dem 3dplot. Dabei wäre es erforderlich, auch die Achsen in geeigneter Form zu beschriften.
Mit meinen tikz-Kenntnissen bekomme ich das nur als 2dplot hin. Ich hänge eine aktuelle Datei mit einem solchen 2dplot an und würde mich freuen, wenn mir jemand helfen kann.
Lutz.[/code]
ich möchte einen 3dplot mit tikz erzeugen und brauche dazu die Hilfe von Experten. Sachlich geht es um die Darstellung der zeitlichen Entwicklung so genannter Zinsstrukturkurven. Eine Zinsstrukturkurve beschreibt die an einem bestimmten Tag geltenden Zinssätze für Laufzeiten von 1 bis 30 Jahren. Wenn man die Zinssätze in Abhängigkeit von der Laufzeit und dem aktuellen Datum grafisch darstellen will, hat man es also mit einer Funktion zu tun, die von zwei Veränderlichen (Laufzeit, aktuelles Datum) abhängt. Daher mein Interesse an dem 3dplot. Dabei wäre es erforderlich, auch die Achsen in geeigneter Form zu beschriften.
Mit meinen tikz-Kenntnissen bekomme ich das nur als 2dplot hin. Ich hänge eine aktuelle Datei mit einem solchen 2dplot an und würde mich freuen, wenn mir jemand helfen kann.
Lutz.[/code]
- Dateianhänge
-
- Zinsstrukturkurven_Ultimo_Juni.tex
- (2.85 KiB) 475-mal heruntergeladen
-
- Forum-Fortgeschrittener
- Beiträge: 91
- Registriert: Mi 5. Okt 2011, 18:24
- Wohnort: Rheinbach
Mit bordmitteln von TikZ ist man da schnell aufgeschmissen... davon wuerde ich abraten (da sitzt Du ja allein an der Achse stundenlang).
Du kannst das auf TikZ basierende Paket Pgfplots verwenden: das kann nicht zur zahlreiche 3d Plots (mesh, surf, line, scatter, quiver, ...), es kann auch die zugehoerigen Achsen vollautomatisch erstellen, skalieren, ticks, tick labels auswaehlen und ranschreiben etc.
Du kannst ja mal unter http://pgfplots.sourceforge.net/ schauen, ob das eine Alternative zu direkter TikZ eingabe waere; das dort verfuegbare manual enthaelt zahlreiche Beispiele.
Disclaimer: ich bin Author des Pakets.
Du kannst das auf TikZ basierende Paket Pgfplots verwenden: das kann nicht zur zahlreiche 3d Plots (mesh, surf, line, scatter, quiver, ...), es kann auch die zugehoerigen Achsen vollautomatisch erstellen, skalieren, ticks, tick labels auswaehlen und ranschreiben etc.
Du kannst ja mal unter http://pgfplots.sourceforge.net/ schauen, ob das eine Alternative zu direkter TikZ eingabe waere; das dort verfuegbare manual enthaelt zahlreiche Beispiele.
Disclaimer: ich bin Author des Pakets.
-
- Forum-Anfänger
- Beiträge: 36
- Registriert: Do 22. Sep 2011, 12:06
- Wohnort: Berlin
-
- Forum-Fortgeschrittener
- Beiträge: 91
- Registriert: Mi 5. Okt 2011, 18:24
- Wohnort: Rheinbach
Hallo Lutz,
ich wuensche viel Erfolg.
Zudem: sorry; ich habe vergessen, Anrede und Grusswort in meiner Antwort zu schreiben. Das ist keine mangelnde Hoeflichkeit; lediglich der Ursache geschuldet dass ich mich auf manchen LaTeX Foren tummle und bei einem weder Anrede noch Grusswort gewuenscht sind...
Mit liebem Gruss
Christian
ich wuensche viel Erfolg.
Zudem: sorry; ich habe vergessen, Anrede und Grusswort in meiner Antwort zu schreiben. Das ist keine mangelnde Hoeflichkeit; lediglich der Ursache geschuldet dass ich mich auf manchen LaTeX Foren tummle und bei einem weder Anrede noch Grusswort gewuenscht sind...
Mit liebem Gruss
Christian
-
- Forum-Anfänger
- Beiträge: 36
- Registriert: Do 22. Sep 2011, 12:06
- Wohnort: Berlin
Hallo Christian,
mit pgfplots habe ich mein Problem auf elegante Weise weitestgehend lösen können. Das Resultat ist sehr überzeugend, und pgfplots ist wirklich leicht anzuwenden.
Ich hänge meine Lösung an, weil ich noch zwei Fragen habe.
1. Ich will auf der z-Achse nicht die Werte 0, 2 und 4 haben, sondern 0 %, 2 %, 4 % und 6 %. Wie lässt sich das erreichen?
2. Die Farben auf der Fläche finde ich einwandfrei. Wenn ich aber das Ergebnis in einem Aufsatz oder Buch veröffentlichen will, muss ich - leider - auf schwarzweiß zurückfallen. Wie kann man das realisieren?
Zum Abschluss noch eine Anregung, von der ich annehme, dass sie nur mit Schwierigkeiten realisierbar ist. Um sich ein zutreffendes Bild von einer 3D-Darstellung zu machen, ist es gelegentlich hilfreich, die Richtung der Achsen zu verändern. Stellt man beispielsweise 3D-Plots mit Mathematica her, so lässt sich die Grafik mit der Maus beliebig drehen, was teilweise zu wirklich interessanten Ansichten führt. Sollte dies auch mit pgfplots möglich sein, wäre das sicher noch einmal klasse.
Einstweilen aber erst einmal herzlichen Dank für die Hilfe und
viele Grüße,
Lutz.
mit pgfplots habe ich mein Problem auf elegante Weise weitestgehend lösen können. Das Resultat ist sehr überzeugend, und pgfplots ist wirklich leicht anzuwenden.
Ich hänge meine Lösung an, weil ich noch zwei Fragen habe.
1. Ich will auf der z-Achse nicht die Werte 0, 2 und 4 haben, sondern 0 %, 2 %, 4 % und 6 %. Wie lässt sich das erreichen?
2. Die Farben auf der Fläche finde ich einwandfrei. Wenn ich aber das Ergebnis in einem Aufsatz oder Buch veröffentlichen will, muss ich - leider - auf schwarzweiß zurückfallen. Wie kann man das realisieren?
Zum Abschluss noch eine Anregung, von der ich annehme, dass sie nur mit Schwierigkeiten realisierbar ist. Um sich ein zutreffendes Bild von einer 3D-Darstellung zu machen, ist es gelegentlich hilfreich, die Richtung der Achsen zu verändern. Stellt man beispielsweise 3D-Plots mit Mathematica her, so lässt sich die Grafik mit der Maus beliebig drehen, was teilweise zu wirklich interessanten Ansichten führt. Sollte dies auch mit pgfplots möglich sein, wäre das sicher noch einmal klasse.
Einstweilen aber erst einmal herzlichen Dank für die Hilfe und
viele Grüße,
Lutz.
- Dateianhänge
-
- Zinsgebirge.zip
- (41.52 KiB) 357-mal heruntergeladen
-
- Forum-Fortgeschrittener
- Beiträge: 91
- Registriert: Mi 5. Okt 2011, 18:24
- Wohnort: Rheinbach
Hallo Lutz,
gute Arbeit. Und: danke fuer das Lob, es freut mich, wenn mein Produkt nuetzlich ist!
hier meine Anregungen zu Deinen Fragen:
1. da gibt es zwei Moeglichkeiten. Die einfachere von beiden ist vermutlich, wenn Du
angibst. Das ist ne Art plugin-mechanismus fuer custom tick labels, die alle die gleiche Gestalt haben - und \tick expandiert zu der (nicht-formatierten) zahl.
2. In Deinem Fall eines surface plots ist die colormap entscheidend. Du kannst sie durch
auf schwarz-weiss umstellen. Das Manual enthaelt dabei auch hinweise, wie man die selber einstellt (oder meinetwegen von weiss nach schwarz gehen laesst oder so).
3. Pgfplots unterstuetzt Aenderungen des views mit grosser Freiheit. Schluessel ist die
option bzw. die beiden einzeloptionen
Argument ist jeweils ein Winkel. Das probiert man am besten aus- vgl. Manual.
Drehung mit der Maus ist derzeit leider nicht moeglich. Das manual enthaelt aber Hinweise, wie man die Winkel von matlab auf die von pgfplots uebertraegt. Ob das dieselben wie in Mathematica sind weiss ich leider nicht.
4. ich habe noch ein paar Anregungen in Deinen sourcecode eingetragen, namentlich
Das ist eine wichtige Sache - die ich leider nicht automatisch vom Paket voreinstellen lassen kann. Mit newest wird Dein plot automatisch GEAENDERT wenn eine neue Version von pgfplots rauskommt. Damit kann sich durchaus auch mal was tun. Die newest option ist vermutlich ein grosser Fehler von mir gewesen
Sinnvoll ist es ,wenn Du mindestens 1.3 angibst - da hat sich viel getan. Noch sinnvoller ist es, wenn Du die Versionsnummer angibst, die bei Dir installiert ist. 1.5 ist die aktuelle. Ich sollte mal Meldungen ausgeben lassen, welche empfehlenswert ist ...
Ausserdem habe ich
justiert, um den horizontalen freiraum wegzumachen (der entsteht durch das lange x/y label). Anstelle des 'at' koenntest Du auch negativen xshift nehmen, aber das 'at' ist praeziser.
Hier der resultierende Code:
Ich hoffe das ist Dir nuetzlich.
resultat haengt an (als png)
Mit liebem Gruss
Christian
gute Arbeit. Und: danke fuer das Lob, es freut mich, wenn mein Produkt nuetzlich ist!
hier meine Anregungen zu Deinen Fragen:
1. da gibt es zwei Moeglichkeiten. Die einfachere von beiden ist vermutlich, wenn Du
zticklabel={$\pgfmathprintnumber{\tick}\%$}
2. In Deinem Fall eines surface plots ist die colormap entscheidend. Du kannst sie durch
colormap/blackwhite
3. Pgfplots unterstuetzt Aenderungen des views mit grosser Freiheit. Schluessel ist die
view={horiz}{vert}
view/h=horiz, view/v=vert,
Drehung mit der Maus ist derzeit leider nicht moeglich. Das manual enthaelt aber Hinweise, wie man die Winkel von matlab auf die von pgfplots uebertraegt. Ob das dieselben wie in Mathematica sind weiss ich leider nicht.
4. ich habe noch ein paar Anregungen in Deinen sourcecode eingetragen, namentlich
\pgfplotsset{compat=1.5}

Ausserdem habe ich
colorbar style
Hier der resultierende Code:
\documentclass[a4paper]{article} \usepackage[greek,ngerman]{betababel} \usepackage{pgfplots} \pgfplotsset{compat=1.5} % ----- CF: use your version. 'newest' will never maintain compatibility \begin{document} \begin{figure} \begin{tikzpicture} \begin{axis}[colorbar,xlabel=Kalenderjahr,ylabel=Laufzeit (in Jahren),zlabel=Kassazinssatz, x tick label style={ /pgf/number format/1000 sep=}, ymin=-5, ymax=35, xtick={2008,2009,2010,2011,2012}, ytick={0,10,20,30},% zticklabel={$\pgfmathprintnumber{\tick}\%$},% ---- CF colorbar style={ % ---- CF at={(parent axis.north east)}, xshift=10pt, }, colormap/blackwhite,% ---- CF view/h=45, % ---- CF ] \addplot3[surf] file {svensson0800-1206.dat}; \end{axis} \end{tikzpicture} \caption{Zinsstrukturkurven (Deutsche Bundesbank)} \end{figure} \end{document}
resultat haengt an (als png)
Mit liebem Gruss
Christian
- Dateianhänge
-
- P.png (53.2 KiB) 2472 mal betrachtet
-
- Forum-Anfänger
- Beiträge: 36
- Registriert: Do 22. Sep 2011, 12:06
- Wohnort: Berlin