Hallo liebe LaTeX-Freunde,

ich würde gerne mittels dem datatool-Paket aus einer .dat-Datei eingelesene (ursprünglich) double Werte in einem tikzpicture als axis cs Wert verwenden. Beim Versuch wie im Minimalbsp.

Open in Online-Editor
\begin{filecontents*}{dumm.dat}
    1.0
    2.2
    3.3
    4.4
    5.5
\end{filecontents*}
\documentclass[margin=2mm]{standalone}
\usepackage{pgfplots}
\usepackage{datatool}
\DTLloaddb[noheader]{mylist}{dumm.dat}
\newcommand\listvalue{}
\newcommand\printlist[1]{%
    \DTLgetvalue\listvalue{mylist}{#1}{1}%
    \listvalue%
}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[xmin=0,xmax=2,ymin=0,ymax=2]
    \node at (axis cs:1, \printlist{4}){hossa};
    \end{axis}
    \end{tikzpicture}
\end{document}

bekomme ich jedoch die Folgende Fehlermeldung: ! Undefined control sequence.

Ich schätze mal, dass hier noch die eingelesenen Werte in einen double Wert (zurück) konvertiert werden müssen o.Ä. (bin kein Fachmann), im Internet habe ich leider keine Hilfe für mein Problem gefunden. Wäre super wenn sich hier Jemand meiner annehmen könnte!

gefragt 14 Mai '15, 17:33

Ross's gravatar image

Ross
37591522
Akzeptiert-Rate: 100%

Ich habe jetzt irgendwie die Vermutung, dass das ein XY-Problem ist. Was ist Dein eigentliches Ziel?

(14 Mai '15, 21:56) esdd

Danke Dir für deine Antwort! Diese hat mein damaliges Problem gelöst gehabt! Leider scheine ich per Windows keine Kommentare mehr abschicken zu können??? Weshalb ich jetzt per Ubuntu schreibe!

(23 Mai '15, 09:27) Ross

Du kannst den Wert der y-Koordinate nicht erst bei der Koordinatenangabe ermitteln lassen. Möglich wäre dagegen

Open in Online-Editor
\begin{filecontents*}{dumm.dat}
    1.0
    2.2
    3.3
    4.4
    5.5
\end{filecontents*}
\documentclass[margin=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usepackage{datatool}
\DTLloaddb[noheader]{mylist}{dumm.dat}
\newcommand\coordvalue[2][coord]{%
  \expandafter\DTLgetvalue\expandafter{\csname#1\endcsname}{mylist}{#2}{1}
}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[xmin=0,xmax=2,ymin=0,ymax=6]
    \coordvalue[ycoord]{4}% <- Abspeichern des Wertes in der 4.Zeile als \ycoord
    \node at (1,\ycoord){hossa};
    \end{axis}
    \end{tikzpicture}
\end{document}

alt text

Wenn es darum geht, Koordinaten aus einer Datei zu verwenden, kann man aber auch die Möglichkeiten von pgfplots nutzen:

Open in Online-Editor
\begin{filecontents*}{dumm.dat}
    1.0
    2.2
    3.3
    4.4
    5.5
\end{filecontents*}
\documentclass[margin=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
    \begin{tikzpicture}
    \begin{axis}[xmin=0,xmax=2,ymin=0,ymax=6]
    \addplot[] table[x expr=1,y index=0,
      restrict expr to domain={\coordindex}{3:3}
      ]{dumm.dat}node{hossa};
    \end{axis}
    \end{tikzpicture}
\end{document}

Zu beachten ist dabei, dass die erste Zeile in der Datei den \coordindex 0 hat und die Spaltenzählung ebenfalls bei 0 beginnt. Das Ergebnis ist das gleiche wie oben.

Permanenter link

beantwortet 14 Mai '15, 22:06

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Deine Antwort
Vorschau umschalten

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

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×17
×7
×4

gestellte Frage: 14 Mai '15, 17:33

Frage wurde gesehen: 9,055 Mal

zuletzt geändert: 23 Mai '15, 09:27