PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nodes near coords aus Tabelle



J0Sch
30-03-2012, 11:43
moin,

ich will eine Kalibrierkurve in einem Diagramm darstellen. Die Abweichung der Messpunkte soll als node dargestellt werden. Die Abweichung wird dabei ebenfalls aus einer Tabelle ausgelesen. Im Moment sieht das so aus:


\documentclass[12pt, oneside, a4paper,landscape]{scrreprt}

\usepackage[latin1]{inputenc} % Umlaute
\usepackage[ngerman]{babel} % Sprache
\usepackage{siunitx} % Darstellen von Einheiten
\usepackage[light,math]{iwona} % andere Schrift
\usepackage{tikz} % Zeichnen in LaTeX
\usepackage{pgfplots} % Zeichnen von Diagrammen
\usepackage{pgfplotstable} % Achsen ticks bearbeiten
\usepackage[version=3]{mhchem} % Chemische Ausdrücke darstellen z.B. \ce{CO2}
\usepackage{lscape} % darstellen von Querseiten

\usetikzlibrary{arrows,shapes,snakes,automata,back grounds,petri,spy,decorations.pathreplacing}

\begin{document}

\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
title=\large{Abweichung zwischen a und b},
scale only axis,
xmin=0, xmax=4,
xtick={0,0.3,...,4},
width={22cm},
height={12cm},
ymin=0, ymax=4,
ytick={0,0.3,...,4},
xlabel={\large{Volumenstrom ist}},
ylabel={\large{Volumenstrom soll}},
grid=major,
legend style={
at={(axis cs:0.01,3.9)},
anchor=north west,
},
]
\addplot[black,mark=none] table[x=DryCal,y=DryCal,]{Tabelle.txt};
\addlegendentry{\small{\ce{CO2} Volumenstrom Drycal}};

\addplot+[red,mark=x,mark options={scale=2},only marks,nodes near coords,point meta=explicit symbolic] table[y=DryCal,x=FIC,meta=ABW]{Tabelle.txt};
\addlegendentry{\small{\ce{CO2} Volumenstrom dosierter und Abweichung in \%}};

\end{axis}

\end{tikzpicture}
\end{figure}
\end{document}

und die Tabelle als .txt Datei (ich weis grad nicht wie ich die in mein Minimalbeispiel integrieren kann)


FIC DryCal ABW
0.3 0.3 \small{\SI{0}{\percent}}
0.6 0.6 \small{\SI{0}{\percent}}
0.9 0.9 \small{\SI{0}{\percent}}
1.2 1.21 \small{\SI{0.8}{\percent}}
1.5 1.51 \small{\SI{0.7}{\percent}}
2 2.02 \small{\SI{1}{\percent}}
2.5 2.53 \small{\SI{1.2}{\percent}}
3 3.03 \small{\SI{1}{\percent}}
3.5 3.53 \small{\SI{0.8}{\percent}}


Prinzipiell funktioniert das so... ich hätte aber gern dass in der Tabelle nur die Prozentzahl steht. Die Formatierung der Zahl (also Größe, Farbe ect.) würde ich gerne im .tex file machen, ähnlich wie
\newcommand{irgendwas}[1]{\small{\SI{#}{\percent}}} wobei aus der Tabelle nur der # Wert gelesen wird.

Geht so etwas?

Viele Grüße,
Josch

Feuersaenger
31-03-2012, 20:24
Hallo JOsch,

das geht: das 'nodes near coords' ist aequivalent zu 'nodes near coords=\pgfplotspointmeta' - und der wert von \pgfplotspointmeta das, was Du in der tabelle definiert hast.

Wenn Du nun 'nodes near coords=\small{\SI{\pgfplotspointmeta}{\percent}}' schreibst, sollte es passen (und natuerlich das datenfile abaenderst sodass nur die zahlen drinstehen).

Mit liebem Gruss

Christian

J0Sch
31-03-2012, 21:00
n Abend,

super genau das was ich gesucht habe ;)
vielen Dank Feuersaenger!

noch eine kleine Schönheitskorrektur, kann ich den Abstand node <-> coordinate verändern? Also ich würde die nodes gerne etwas höher setzten.

Viele Grüße,
Josch

Feuersaenger
02-04-2012, 18:31
Hallo JOSch,

sicher, man kann da styles anpassen: irgendwie sowas wie 'node near coord style={yshift=5pt}' oder so. Details muesste ich auch nachlesen; aber 'yshift' ist auf jeden Fall das, was wohl helfen wird.


Mit liebem Gruss

Christian

J0Sch
02-04-2012, 21:31
hi,

und nochmal vielen Dank Christian!


every node near coord/.style={yshift=5pt}

hat geholfen.

Viele Grüße,
Josch