Ich habe hier eine Tabelle

Öffne in Overleaf
x y1 y2 Info
1 4 9 A
2 5 8 B
3 3 7 C
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

und möchte einen Graphen zeichnen, bei dem links und rechts die Achsen y1 und y2 auftauchen, d.h. alt text

Dazu lese ich mittels \pgfplotstablegetelem{<row>}{<column>}\of{<table>}\pgfplotsretval aus der Tabelle und möchte mit einer Schleife die Werte als nodes platzieren.

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
% Zweite y-Achse
% Maximalen x-Wert für node-Platzierung auslesen
\def\xMax{\pgfkeysvalueof{/pgfplots/xmax}}
%
\pgfplotsinvokeforeach{0,1,...,2}{%%
% Koordinaten lesen
\ZelleLesen{#1}{y1}
\def\yKoordinate{\pgfplotsretval} % <---- Problem hier!!!
% Koordinaten setzen
\node[red, anchor=west, xshift=0.125pt] at (axis cs: \xMax,\yKoordinate) {\Zelle{#1}{y2}};
}%%
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Dabei geht aber etwas schief: Alle Werte werden an die selbe Stelle gesetzt. Scheints ändert sich die \def\yKoordinate nicht.

alt text

Was muss ich da anders machen?


PS: Ein ähnliches Problem gab es schonmal hier Wie kann ich in pgfplots den Parameter an eine Parameterfunktion-Kurvenschar schreiben? aber die Lösung dort funktioniert gleich mal wieder nicht.


Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
%\documentclass[]{article}
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{filecontents}{datatable.dat}
x y1 y2 Info
1 4 9 A
2 5 8 B
3 3 7 C
\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}{y2} \\
\begin{tikzpicture}
\begin{axis}[
clip=false,
%y = 1cm,
visualization depends on={value \thisrowno{3} \as \Name},
nodes near coords={\Name},
xtick = data,
ytick=data,
]
\addplot [only marks, mark=*] table[] {datatable.dat};
%
% Zweite y-Achse
% Maximalen x-Wert für node-Platzierung auslesen
\def\xMax{\pgfkeysvalueof{/pgfplots/xmax}}
%
\pgfplotstablegetrowsof{datatable.dat}
\pgfmathsetmacro{\Zeilenzahl}{\pgfplotsretval-1}
\pgfplotsinvokeforeach{0,...,\Zeilenzahl}{%%
% Koordinaten lesen
\ZelleLesen{#1}{y1}
\def\yKoordinate{\pgfplotsretval} % <---- Problem hier!!!
% Koordinaten setzen
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 09 Feb '18, 18:44

cis's gravatar image

cis
9.6k103460491
Akzeptiert-Rate: 29%

bearbeitet 10 Feb '18, 22:11


Konnte das Problem so lösen:

alt text

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
%\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}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 11 Feb '18, 18:24

cis's gravatar image

cis
9.6k103460491
Akzeptiert-Rate: 29%

bearbeitet 11 Feb '18, 18:24

Deine Antwort
[Vorschau ausblenden]

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

Frage-Themen:

×298

gestellte Frage: 09 Feb '18, 18:44

Frage wurde gesehen: 4,359 Mal

zuletzt geändert: 11 Feb '18, 18:24