Farbe der Fehlerbalken (je Messwert) ändern

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Farbe der Fehlerbalken (je Messwert) ändern

von die_nase » Fr 24. Jul 2015, 11:35

Ah, klasse. Vielen vielen Dank, das war genau das was ich suchte.

Deine Lösung ist super; so kann ich die "normalen" Messwerte und die "Ausreißer" in der Legende angeben.

von esdd » Fr 24. Jul 2015, 10:58

Wenn Du als label Zahlen statt Buchstaben verwenden kannst, dann ginge
\begin{filecontents*}{Daten.dat} 
 x   y   label 
 1   1    0
 2   4    0
 3   9    0
 4   16   1 
 5   25   1 
 6   36   0
 7   49   1 
 8   64   1 
 9   81   0
 10   100  0 
\end{filecontents*} 

\documentclass[border=10mm]{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{width=15cm,compat=newest}
\colorlet{FarbeI}{blue}
\colorlet{FarbeII}{red}
\begin{document} 
\pgfplotsset{grid style={dotted,gray, thin}} 
%\tikzset{every pin/.style={fill=white,draw=black,font=\footnotesize}} 
\begin{tikzpicture} 
  \begin{axis}[ 
      title=Titel, 
      xlabel={Messdaten $x$}, 
      ylabel={Messdaten $y$}, 
      legend pos=north west, 
      scale only axis, 
      grid=both, 
      legend columns=2,
      legend style={nodes={text=FarbeI}}
    ] 
    %\addplot[FarbeI,forget plot]table{Daten.dat};% falls die Kurve auch gezeichnet werden soll
    \addplot[only marks,FarbeI, mark=square*,
      restrict expr to domain={\thisrow{label}}{0:0},
      error bars/.cd, y dir=both,y fixed=3, x dir=both,x fixed=1]table{Daten.dat};
    \addplot[only marks,FarbeII, mark=triangle*,
      restrict expr to domain={\thisrow{label}}{1:1},
      error bars/.cd, y dir=both,y fixed=3, x dir=both,x fixed=1]table{Daten.dat};
    \legend{f(x), {../Daten.dat}}; 
  \end{axis} 
\end{tikzpicture} 
\end{document} 
Das mit der Farbe des Legendeneintrags habe ich nicht so richtig verstanden, aber vielleicht ist es trotzdem das, was Du suchst.

Gruß
Elke

Bild
Dateianhänge
gl_ausreisser.png
gl_ausreisser.png (21.79 KiB) 1659 mal betrachtet

Farbe der Fehlerbalken (je Messwert) ändern

von die_nase » Fr 24. Jul 2015, 09:14

Hallo zusammen,

ich brauche noch einmal eure Hilfe: Ich habe einen Plot mit Messdaten und deren x- und y-Fehler(balken) erstellt. Jetzt möchte ich gerne die "Aussreißer" farbig von den übrigen Messdaten abheben. Das hat auch geklappt, wenn ich in den Ursprungsdaten einfach eine "Label"-Spalte hinzugefügt habe und mit scatter/classes unterschieden habe (siehe MB). Leider sind dann jeweils die Messpunkte in der entsprechenden Farbe, nicht jedoch die zugehörigen Fehlerbalken.

Hier wird ein ähnliches Problem beschrieben: error bar colors in scatter plot, allerdings habe ich es nicht hinbekommen, dass ich es auf mein Beispiel übertrage. Zudem lese ich die Fehler nicht aus der Quell-Datei aus, sondern lege sie direkt fest (also alle auf den gleichen Wert).

\documentclass[boarder=10mm]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\pgfplotsset{width=15cm,compat=newest}
\usetikzlibrary{plotmarks}

% Zum testen: Quadratzahlen, label ist willkürlich
\begin{filecontents}{Daten.dat}
x	y	label
1	1	a
2	4	a
3	9	a
4	16	b
5	25	b
6	36	a
7	49	b
8	64	b
9	81	a
10	100	a
\end{filecontents}


\begin{document}
\pagestyle{empty}

\pgfplotsset{grid style={dotted,gray, thin}} 
\tikzstyle{every pin}=[fill=white,draw=black,font=\footnotesize] 

% Beginn TikZ
\begin{tikzpicture} 
	\begin{axis}[
		title=Titel,
  		xlabel={Messdaten $x$},
		ylabel={Messdaten $y$},
		legend pos=north west,
		scale only axis,
		grid=both,
		legend columns=2
			]

	\addplot[only marks, point meta=explicit symbolic, scatter,
		scatter/classes={ a={mark=square*,blue},	b={mark=triangle*,red}},
		blue, error bars/.cd, y dir=both,y fixed=3, x dir=both,x fixed=1] 
				table[meta=label] {Daten.dat};


	\legend{f(x), {../Daten.dat}};
	
	\end{axis}
\end{tikzpicture}

\end{document}
Dabei sollen quasi alle "normalen" Messpunkte Farbe_1 haben, alle Ausreißer die Farbe_2. Ich muss zugeben, dass es meistens nicht so viele Ausreißer gibt (bis jetzt zumindest), weshalb vielleicht auch eine Lösung funktionieren würde, bei der man händisch die Farben ändert. Und: Bekommt man es hin, dass der Legenden-Eintrag auch Farbe_1 hat?

Viele Grüße und Danke im Voraus!

Nach oben