Die Mathe-Redaktion - 20.06.2018 13:01 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Juli
ListenpunktFormeleditor fedgeo
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 568 Gäste und 27 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von Stefan_K
Matroids Matheplanet Forum Index » Textsatz mit LaTeX » LaTeX: Zwei Tabellenwerte in Schleife verwenden
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich LaTeX: Zwei Tabellenwerte in Schleife verwenden
cis
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.08.2002
Mitteilungen: 14945
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-02-11


Hallo!

Ich habe hier eine Tabelle
Zeile    y1     y2    
0         4     9      
1         5     8    
2         3     7   

und möchte die Werte in einer Schleife auslesen. Das geht im Paket pgfplots mit \pgfplotstablegetelem{<row>}{<column>}\of{<table>}\pgfplotsretval.

Und zwar so, dass an der y1-Koordinate  der Wert von y2 steht.

In einer normalen TikZ-Umgebung tut das erstmal ohne Weiteres.

In einer axis-Umgebung werden allerdings alle y2-Werte beim ersten y1-Wert der Schleife platziert.



latex
%\documentclass[]{article}
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{filecontents}
\usepackage{pgfplots}
	\pgfplotsset{compat=1.13}
 
\begin{filecontents*}{datatable.dat}
Zeile    y1   y2    
0         4     9      
1         5     8    
2         3     7      
\end{filecontents*}
 
\begin{document}
% Tabellen-Element auslesen
%\pgfplotstablegetelem{<row>}{<column>}\of{<table>}\pgfplotsretval
\newcommand\ZelleLesen[2]{\pgfplotstablegetelem{#1}{#2}\of{datatable.dat}}
\newcommand\Zelle[2]{\ZelleLesen{#1}{#2}\pgfplotsretval}
Test: \Zelle{0}{y1} \\
 
Tut: \\
\begin{tikzpicture}
\pgfplotsinvokeforeach{0,...,2}{
\ZelleLesen{#1}{y1}
\node[] at (0,\pgfplotsretval) {\Zelle{#1}{y1}};
}
\pgfplotsinvokeforeach{0,...,2}{
\ZelleLesen{#1}{y1}
\node[] at (1,\pgfplotsretval) {\Zelle{#1}{y2}};
}
\end{tikzpicture}
 
Tut nicht: \\
\begin{tikzpicture}
\begin{axis}[
%clip=false,
xtick = data, ytick=data, 
]
\addplot [only marks, mark=*,
visualization depends on={value \thisrowno{3}  \as \Name},
nodes near coords={\Name}, 
] table[] {datatable2.dat}; 
%
% tut
\node[] at (axis cs: 2,3) {tut};
% tut nicht
\pgfplotsinvokeforeach{0,...,2}{
\ZelleLesen{#1}{y1}
\node[red] at (axis cs: 2.5,\pgfplotsretval) {\Zelle{#1}{y2} tut nicht};
}
\end{axis}
\end{tikzpicture}
 
\end{document}



-----------------
Wenn man alles ausgeschaltet hat, was unmöglich ist, bleibt am Ende etwas übrig, das die Wahrheit enthalten muß - mag es auch noch so unwahrscheinlich sein...
(Sherlock Holmes)
·



  Profil  Quote  Link auf diesen Beitrag Link
dromedar
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 26.10.2013
Mitteilungen: 4985
Aus: München
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2018-02-11

\(\begingroup\)
Hallo cis,

2018-02-11 11:23 - cis im Themenstart schreibt:
liefert
\[9 \\ 9 \\ 9\]

Es kann auch nur 9er liefern, weil Du ausschließlich die Zeile "0" der "y2"-Spalte ausliest und da eine 9 steht:

2018-02-11 11:23 - cis im Themenstart schreibt:
LaTeX
\node[] at (1,\pgfplotsretval) {\Zelle{0}{y2}};


Grüße,
dromedar
\(\endgroup\)


  Profil  Quote  Link auf diesen Beitrag Link
cis
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.08.2002
Mitteilungen: 14945
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2018-02-11


Ja, das stimmt.

Verdammt. Ich hatte eigentlich ein anderes Problem. Und zwar, dass das ganze in einer axis-Umgebung nicht funktioniert, wenngleich \pgfplotsinvokeforeach für axis-Umgebungen vorgesehen ist.

Alle Werte der Schleife werden seltsamerweise beim ersten y1-Wert platziert y1=4.



latex
Siehe #0



  Profil  Quote  Link auf diesen Beitrag Link
cis
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.08.2002
Mitteilungen: 14945
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2018-02-11


Konnte das Problem so lösen:



latex
%\documentclass[]{article}
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{filecontents}
\usepackage{pgfplots}
	\pgfplotsset{compat=1.13}
 
\begin{filecontents*}{datatable.dat}
Zeile    y1   y2    
0         4     9      
1         5     8    
2         3     7      
\end{filecontents*}
 
\begin{document}
% Tabellen-Element auslesen
%\pgfplotstablegetelem{<row>}{<column>}\of{<table>}\pgfplotsretval
\newcommand\ZelleLesen[2]{\pgfplotstablegetelem{#1}{#2}\of{datatable.dat}}
\newcommand\Zelle[2]{\ZelleLesen{#1}{#2}\pgfplotsretval}
Test: \Zelle{0}{y1} \\
 
\begin{tikzpicture}
\begin{axis}[
clip=false,
xtick = data, ytick=data, 
]
\addplot [only marks, mark=*,
visualization depends on={value \thisrowno{3}  \as \Name},
nodes near coords={\Name}, 
] table[] {datatable2.dat}; 
%
% Zeilenzahl ermitteln
\pgfplotstablegetrowsof{datatable.dat}
\pgfmathtruncatemacro{\Zeilenzahl}{\pgfplotsretval-1}  
% Größten x-Wert auslesen
\def\xMax{\pgfkeysvalueof{/pgfplots/xmax}}
%
% Koordinaten der zweiten y-Achse platzieren
\pgfplotsinvokeforeach{0,...,\Zeilenzahl}{%%
\ZelleLesen{#1}{y1}
\addplot[only marks, mark=text, 
text mark={}, % leer lassen  %    \Zelle{#1}{y2}
nodes near coords={\Zelle{#1}{y2}}, 
every node near coord/.append style={red, 
anchor= west,
shift={(axis direction cs:\xMax-1,0)}, xshift=0.125pt,
}, 
]coordinates {(1,\pgfplotsretval)};
}%%
% Test: 
%\node at (axis cs: 2,4) {\xMax / \Zeilenzahl};
%
\end{axis}
\end{tikzpicture}
 
\end{document}



  Profil  Quote  Link auf diesen Beitrag Link
cis
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.08.2002
Mitteilungen: 14945
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2018-02-11


Wobei ja die Lösung über nodes (im Unterschied zu coordinates, vgl. #3) schon gut gewesen wäre.

Das hat sehr wahrscheinlich etwas mit 'noexpand, relax, edef usw.' zu tun.
Ich habe es nicht hinbekommen.

Vielleicht hat ja jmd. Lust hat die Schleife #0 mal zu durchleuchten...  wink



  Profil  Quote  Link auf diesen Beitrag Link
cis hat die Antworten auf ihre/seine Frage gesehen.
cis hatte hier bereits selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2018 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]