Liebes Forum,

ich sitze nun seit Stunden wie ein Ochse vorm Berg und versuche einen 3d Plot zu erstellen für einen empirischen Datensatz. Ich habe mich auch durch Google und das Manual gequält, aber irgendwie krieg ich es nicht hin.

Was ich möchte ist ein 3D Plot von einem Datensatz, der wie folgt aussieht:

2013-12-01, 0.13, 0.24, 0.44, 0.69, 0.95, 1.21, 1.47, 1.7, 1.92, 2.11

2014-01-01, 0.06, 0.08, 0.2, 0.39, 0.61, 0.85, 1.09, 1.32, 1.53, 1.73

2014-02-01, 0.08, 0.11, 0.23, 0.4, 0.61, 0.83, 1.06, 1.27, 1.48, 1.67

2014-03-01, 0.13, 0.14, 0.25, 0.41, 0.61, 0.82, 1.04, 1.26, 1.46, 1.65

2014-04-01, 0.13, 0.15, 0.25, 0.41, 0.6, 0.81, 1.02, 1.23, 1.43, 1.61

2014-05-01, 0.05, 0.04, 0.13, 0.27, 0.44, 0.64, 0.84, 1.04, 1.24, 1.42

2014-06-01, 0, 0.01, 0.09, 0.22, 0.38, 0.57, 0.76, 0.95, 1.14, 1.31

Dabei handelt es sich um Zinsen einer Zinsstrukturkurve zu bestimmten Zeitpunkten. Diese Zeitkomponente macht mir aber enorme Probleme.

Kann mir jemand zeigen wie ich in pgfplots eine 3D Oberfläche mit diesen Daten hinbekomme? Die Zeitachse sollte nach hinten laufen, horizontal die Spalten (Fristen: von einem Jahr nach 10 Jahre) und vertikal die Höhe des Zinses (Also der Werte in der Matrix)?

LIEBEN DANK!!!

gefragt 13 Feb, 16:06

Taran78's gravatar image

Taran78
231
Akzeptiert: 100%

Willkommen auf TeXwelt!

(18 Feb, 01:29) saputello

Man muss leider jede Spalte einzeln plotten, aber man kann mit \pgfplotsinvokeforeach einfach über die Spalten der Tabelle iterieren. Für die y-Achse bietet sich die Bibliothek dateplot an.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots,pgfplotstable}
\usepgfplotslibrary{dateplot}
\pgfplotstableread[col sep=comma]{
2013-12-01, 0.13, 0.24, 0.44, 0.69, 0.95, 1.21, 1.47, 1.7, 1.92, 2.11
2014-01-01, 0.06, 0.08, 0.2, 0.39, 0.61, 0.85, 1.09, 1.32, 1.53, 1.73
2014-02-01, 0.08, 0.11, 0.23, 0.4, 0.61, 0.83, 1.06, 1.27, 1.48, 1.67
2014-03-01, 0.13, 0.14, 0.25, 0.41, 0.61, 0.82, 1.04, 1.26, 1.46, 1.65
2014-04-01, 0.13, 0.15, 0.25, 0.41, 0.6, 0.81, 1.02, 1.23, 1.43, 1.61
2014-05-01, 0.05, 0.04, 0.13, 0.27, 0.44, 0.64, 0.84, 1.04, 1.24, 1.42
2014-06-01, 0, 0.01, 0.09, 0.22, 0.38, 0.57, 0.76, 0.95, 1.14, 1.31
}\loadedtable
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    xlabel = Spalte,
    ylabel = Datum,
    zlabel = Zins,
    date coordinates in=y,
    yticklabel={\day.\month.\year},
    x dir=reverse
    ]
    \pgfplotstablegetcolsof\loadedtable
    \pgfmathparse{int(\pgfplotsretval-1)}
    \pgfplotsinvokeforeach{1,...,\pgfmathresult}{
      \addplot3[scatter,only marks]
        table[x expr=#1, y index=0, z index=#1] {\loadedtable};
    }
  \end{axis}
\end{tikzpicture}
\end{document}

alt text

Um eine geschlossene Oberfläche plotten zu können muss man die Daten umformatieren.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots,pgfplotstable}
\usepgfplotslibrary{dateplot}
\pgfplotstableread[col sep=comma]{
2013-12-01, 1, 0.13
2013-12-01, 2, 0.24
2013-12-01, 3, 0.44
2013-12-01, 4, 0.69
2013-12-01, 5, 0.95
2013-12-01, 6, 1.21
2013-12-01, 7, 1.47
2013-12-01, 8, 1.7
2013-12-01, 9, 1.92
2013-12-01, 10, 2.11
2014-01-01, 1, 0.06
2014-01-01, 2, 0.08
2014-01-01, 3, 0.2
2014-01-01, 4, 0.39
2014-01-01, 5, 0.61
2014-01-01, 6, 0.85
2014-01-01, 7, 1.09
2014-01-01, 8, 1.32
2014-01-01, 9, 1.53
2014-01-01, 10, 1.73
2014-02-01, 1, 0.08
2014-02-01, 2, 0.11
2014-02-01, 3, 0.23
2014-02-01, 4, 0.4
2014-02-01, 5, 0.61
2014-02-01, 6, 0.83
2014-02-01, 7, 1.06
2014-02-01, 8, 1.27
2014-02-01, 9, 1.48
2014-02-01, 10, 1.67
2014-03-01, 1, 0.13
2014-03-01, 2, 0.14
2014-03-01, 3, 0.25
2014-03-01, 4, 0.41
2014-03-01, 5, 0.61
2014-03-01, 6, 0.82
2014-03-01, 7, 1.04
2014-03-01, 8, 1.26
2014-03-01, 9, 1.46
2014-03-01, 10, 1.65
2014-04-01, 1, 0.13
2014-04-01, 2, 0.15
2014-04-01, 3, 0.25
2014-04-01, 4, 0.41
2014-04-01, 5, 0.6
2014-04-01, 6, 0.81
2014-04-01, 7, 1.02
2014-04-01, 8, 1.23
2014-04-01, 9, 1.43
2014-04-01, 10, 1.61
2014-05-01, 1, 0.05
2014-05-01, 2, 0.04
2014-05-01, 3, 0.13
2014-05-01, 4, 0.27
2014-05-01, 5, 0.44
2014-05-01, 6, 0.64
2014-05-01, 7, 0.84
2014-05-01, 8, 1.04
2014-05-01, 9, 1.24
2014-05-01, 10, 1.42
2014-06-01, 1, 0
2014-06-01, 2, 0.01
2014-06-01, 3, 0.09
2014-06-01, 4, 0.22
2014-06-01, 5, 0.38
2014-06-01, 6, 0.57
2014-06-01, 7, 0.76
2014-06-01, 8, 0.95
2014-06-01, 9, 1.14
2014-06-01, 10, 1.31
}\loadedtable
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    xlabel = Spalte,
    ylabel = Datum,
    zlabel = Zins,
    date coordinates in=y,
    yticklabel={\day.\month.\year},
    x dir=reverse
    ]
    \addplot3[surf,mesh/cols=10]
      table[x index=1, y index=0, z index=2] {\loadedtable};
  \end{axis}
\end{tikzpicture}
\end{document}

alt text

Man kann auch nette Kombinationen bauen


Open in Online-Editor
\addplot3[mesh,scatter,mesh/cols=10]
  table[x index=1, y index=0, z index=2] {\loadedtable};

alt text


Open in Online-Editor
\addplot3[surf,shader=interp,scatter,mesh/cols=10]
  table[x index=1, y index=0, z index=2] {\loadedtable};

alt text


Open in Online-Editor
\addplot3[surf,scatter,mesh/cols=10,fill=white]
  table[x index=1, y index=0, z index=2] {\loadedtable};

alt text

Permanenter link

beantwortet 16 Feb, 05:14

Henri's gravatar image

Henri
10.0k31730

bearbeitet 16 Feb, 05:57

Das hilft mir enorm weiter! VIELEN VIELEN DANK!!!

(17 Feb, 17:39) Taran78

Ich habe Deine "Antwort" in einen Kommentar umgewandelt. Hier sind Antworten stets "echte" Antworten, keine Gespräche oder Rückfragen oder Zusatzinfos oder Danke, 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. Statt "vielen Dank" genügt normalerweise aber auch der Klick auf Haken und Daumen hoch, ebenso wie wir in der Frage weder Anrede noch Gruß oder vorauseilenden Dank brauchen.

(18 Feb, 01:27) saputello
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×20
×9
×1

Frage gestellt: 13 Feb, 16:06

Frage wurde angeschaut: 964 Mal

Zuletzt aktualisiert: 18 Feb, 01:29