pgfplots Balkendiagramm mit Fehlerbalken und Beschriftung

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: pgfplots Balkendiagramm mit Fehlerbalken und Beschriftung

von eduardinho » Do 11. Jun 2015, 09:00

ah xticks nennt man die also :)

klasse, danke dir vielmals für die ganze Hilfe.

von esdd » Do 11. Jun 2015, 08:45

Ach Du meinst die xticks. Wenn Du die oben ausblenden willst, dann nimm xtick pos=left. Wenn sie nach innen zeigen sollen, dann xtick align=inside. Allerdings zeigen die dann oben und unten nach innen und unten liegen sie unter den Plots, sind also nicht mehr sichtbar.

Gruß
Elke

von eduardinho » Do 11. Jun 2015, 08:31

Danke sehr.
der erste Punkt funktioniert gut.

Beim zweiten meinte ich aber nicht die error bars, sondern sozusagen im Prinzip die y major grids, die zwar ausgeblendet sind, wo aber doch die "kurzen Stummel" aus dem Diagramm herausragen, und ich hätte gerne die kurzen Stummel in das Diaramm hineinragen

von esdd » Mi 10. Jun 2015, 17:00

eduardinho hat geschrieben: - wie kann ich die Beschriftung noch ein wenig nach links verschieben? habe das auf ein paar andere Daten angewendet, wo der "linke Balken" recht deutlich kleiner ist als der mittlere und somit die Beschriftung in den mittleren Balken hineinragt.
Du kannst innerhalb von every node near coord/.append style noch xshift=-1mm verwenden, um die Beschriftung 1mm nach links zu schieben. Aber besser wäre dann vielleicht doch rotate=90] in Kombination mit anchor=west.

[quote="eduardinho"]
- und vielleicht noch etwas doofe Frage: wie kann ich die kleinen Striche oben umdrehen, also dass sie nach unten in das Diagramm hineinragen? im manual scheinen die alle automatisch schon nach unten zu zeigen.[/quote]

error mark options={rotate=30} hinter error mark=triangle*

Gruß
Elke

von eduardinho » Mi 10. Jun 2015, 10:25

Perfekt, so hab ich mir das gewünscht.

Danke Elke.

Zwei kleine Fragen habe ich noch:
- wie kann ich die Beschriftung noch ein wenig nach links verschieben? habe das auf ein paar andere Daten angewendet, wo der "linke Balken" recht deutlich kleiner ist als der mittlere und somit die Beschriftung in den mittleren Balken hineinragt.

- und vielleicht noch etwas doofe Frage: wie kann ich die kleinen Striche oben umdrehen, also dass sie nach unten in das Diagramm hineinragen? im manual scheinen die alle automatisch schon nach unten zu zeigen.
Dateianhänge
Unbenannt2.PNG
Unbenannt2.PNG (9.11 KiB) 4325 mal betrachtet
Unbenannt1.PNG
Unbenannt1.PNG (2.7 KiB) 4258 mal betrachtet

von esdd » Di 9. Jun 2015, 18:40

Hier ist ein Vorschlag, der einigermaßen passen sollte:


\documentclass{scrartcl} 
\usepackage{pgfplots} 
\pgfplotsset{
  compat=1.12,
  /pgf/number format/use comma
} 
\usetikzlibrary{patterns} 

\begin{filecontents*}{data.txt} 
 Name   x   T1   st1   T2   st2   T3   st3 
 Stamm1   1   80   4.5   70   3.2   65   2   
 Stamm2   2   50   2   45   0.5   42   1 
 Stamm3   3   45   3   40   1   35   3 
 Stamm4   4   60   1.5   50   1.5   48   1.5   
 Stamm5   5   150   8   154   15   149   7 
 Stamm6   6   140   7   150   3   148   4 
\end{filecontents*} 

\begin{document} 

\begin{tikzpicture} 
    \begin{axis}[ 
       ybar=2pt,  %configures bar shift 
       ylabel={Dauer}, 
    width=12cm, 
     xticklabels from table={data.txt}{Name},       
       xtick=data, 
       ticklabel style={/pgf/number format/.cd, use comma, 1000 sep = {}}, 
       nodes near coords, 
      every node near coord/.append style={
          yshift=transformdirectiony(\myshift+1),
          anchor=south west,
          rotate=45,
          font=\scriptsize
        },
    ymajorgrids=true, 
    legend pos= north west,% Legende oben links in Abb. 
    legend cell align=right% Rechtsbündige Ausrichtung der Legende 
    ] 
      \addplot 
       [draw = blue, 
        fill = blue!30!white, 
          error bars/.cd, 
          y dir=both, 
          y explicit, 
          error mark=triangle*, 
          error bar style={color=black}]   
        table[ 
          x=x, 
          y=T1, 
          y error=st1,
          visualization depends on=1.25*\thisrow{st1} \as \myshift,
        ] 
      {data.txt}; 
      \addlegendentry{T1}; 
      \addplot 
       [draw = red, 
        fill=white, 
        postaction={pattern=north east lines,pattern color=red!30!white}, 
          error bars/.cd, 
          y dir=both, 
          y explicit, 
          error mark=triangle*, 
          error bar style={color=black}]   
        table[ 
          x=x, 
          y=T2, 
          y error=st2,
          visualization depends on=1.25*\thisrow{st2} \as \myshift,
        ] 
      {data.txt}; 
      \addlegendentry{T2}; 
      \addplot 
       [draw = green, 
        fill=white, 
        postaction={pattern=north west lines,pattern color=green!30!white}, 
          error bars/.cd, 
          y dir=both, 
          y explicit, 
          error mark=triangle*, 
          error bar style={color=black}]   
        table[ 
          x=x, 
          y=T3, 
          y error=st3,
          visualization depends on=1.25*\thisrow{st3} \as \myshift,
        ] 
      {data.txt};     
      \addlegendentry{T3};           
    \end{axis} 
\end{tikzpicture} 
\end{document}
Gruß
Elke

Bild
Dateianhänge
gl_barpler.png
gl_barpler.png (25.95 KiB) 4348 mal betrachtet

pgfplots Balkendiagramm mit Fehlerbalken und Beschriftung

von eduardinho » Di 9. Jun 2015, 17:28

Hallo zusammen,

ich versuche gerade von Excel-Diagrammen auf pgfplots in Latex umzusteigen. Ich habe nun folgendes Problem: Ich habe ein Balkendiagramm mit jeweils 3 zusammengefassten Balken, diese haben jeweils eine Standardabweichung, die abgebildet werden soll. Außerdem soll der y-Wert bei jedem Balken angegeben werden. Wenn ich diesen mit
nodes near coords
angebe, überschneidet sich dieser mit den Fehlerbalken. Also habe ich versucht mit den Befehlen
nodes near coords align={...}, 
every node near coord/.append style={...}
versucht die Beschriftung um 45° zu rotieren und über dem Fehlerbalken zu platzieren. Leider habe ich das nicht hingekriegt. Das pgfplots Manual hat mir auch nur bedingt weitergeholfen.

Es wäre toll, wenn mir jemand helfen könnte,
- die Werte um 45° gedreht über den Fehlerbalken zu platzieren
- einzelne Werte manuell bei großen Standardabweichungen zu verschieben, geht das? (Standardabweichung bei Stamm5 im Bsp. deutlich höher als bei den restlichen Daten)
- alternativ die Werte evtl. in der Mitte des Balkens anzuzeigen.

Nun der Code, soweit ich gekommen bin:
\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{/pgf/number format/use comma}
\usetikzlibrary{patterns}

\begin{filecontents*}{data.txt}
Name	x	T1	st1	T2	st2	T3	st3
Stamm1	1	80	4.5	70	3.2	65	2	
Stamm2	2	50	2	45	0.5	42	1
Stamm3	3	45	3	40	1	35	3
Stamm4	4	60	1.5	50	1.5	48	1.5	
Stamm5	5	150	8	154	15	149	7
Stamm6	6	140	7	150	3	148	4
\end{filecontents*}

\begin{document}

\begin{tikzpicture}
   \begin{axis}[
   	ybar=1pt,  %configures bar shift
   	ylabel={Dauer},
	width=12cm,
    xticklabels from table={data.txt}{Name},   	
   	xtick=data,
   	ticklabel style={/pgf/number format/.cd, use comma, 1000 sep = {}},
   	nodes near coords,
	nodes near coords align={rotate=45, /pgf/number format/precision=0}, 
%    every node near coord/.append style={
%    rotate=45,
%      font=\scriptsize,
%      /pgf/number format/precision=0,
%      anchor=north,       
%		at={(\coordindex,\coordindex+5)}},      
%   	enlargelimits=auto,
	ymajorgrids=true,
	legend pos= north west,% Legende oben links in Abb.
	legend cell align=right% Rechtsbündige Ausrichtung der Legende
	] 
     \addplot
		[draw = blue,
		 fill = blue!30!white,
         error bars/.cd, 
         y dir=both, 
         y explicit, 
         error mark=triangle*,
         error bar style={color=black}]  
       table[
         x=x, 
         y=T1, 
         y error=st1
       ] 
     {data.txt};
     \addlegendentry{T1};
     \addplot
		[draw = red,
		 fill=white,
		 postaction={pattern=north east lines,pattern color=red!30!white},
         error bars/.cd, 
         y dir=both, 
         y explicit, 
         error mark=triangle*,
         error bar style={color=black}]  
       table[
         x=x, 
         y=T2, 
         y error=st2
       ] 
     {data.txt};
     \addlegendentry{T2};
     \addplot
		[draw = green,
		 fill=white,
		 postaction={pattern=north west lines,pattern color=green!30!white},
         error bars/.cd, 
         y dir=both, 
         y explicit, 
         error mark=triangle*,
         error bar style={color=black}]  
       table[
         x=x, 
         y=T3, 
         y error=st3
       ] 
     {data.txt};     
     \addlegendentry{T3};           
   \end{axis} 
\end{tikzpicture}

\end{document}
Vielen Dank für eure Hilfe

Nach oben