Anzeige:
Ergebnis 1 bis 11 von 11

Thema: pgfplots: Säulendiagramm (Anfängerfragen)

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361

    pgfplots: Säulendiagramm (Anfängerfragen)

    Liebes Forum,

    Ziel vorerst ist die Erstellung eines Säulendiagramms mit Fehlerbalken nach oben – was bisher auch geklappt hat.

    Aber einige Verbesserung wären ganz nett :-)

    1. Daten
    - Wie sollte ich die Daten am besten eingeben? Ist es sinnvoll "coordinates" anzugeben? oder besser "addplot table" wie im Manual auf Seite 28?
    Am liebsten wäre mir, wenn ich Daten aus Excel einfach über Copy & Paste eingeben kann, so dass ich nichts mehr anpassen muss.
    In Excel sehen meine Daten so aus:

    Gruppe E/P Standardabweichung
    Sham 1,1 0,5

    2. Fehlerbalken
    Ich wusste nicht genau wie und habe den Fehler nach oben und nach unten angegeben, obwohl nur nach oben gebraucht wird. Wie kann ich den unteren Wert auslassen, dass es zu keinem LaTeX-Fehler kommt?

    3. y-Achse
    Wie erreicht man, dass keine Zwischenzahlen ausgelassen werden?

    4. Serifenlose Schrift wäre ganz nett, aber das scheint wohl nur global möglich zu sein (Thread)

    Auch über Schönheitstipps freue ich mich!

    Code:
    \documentclass{scrbook}
    \usepackage{xltxtra} % XeLaTeX
    \usepackage{pgfplots}
    \usepackage{tikz}
    
    %\addplot table[x=dof,y=Lmax] {
    %1 5
    %2 3
    %3 6
    %4 4
    %5 0
    %6 1
    %};
    
    
    \begin{document}
    
    \begin{tikzpicture}
    \begin{axis}[
    title = {EC/P},
    ybar,
    width=10cm,
    ymin=0,
    ymax=16.5,
    bar width=20pt,
    xtick={1,...,5},
    xticklabels={%
    Sham,
    STZ,
    MG,
    MG+Ala,
    MG+BSO}
    ]
    \addplot[fill=black,draw=black,ybar,error bars/.cd,y dir=plus,y explicit] 
    coordinates
    {
    (1,10.6666666667)  +- (0.5773502692,0.5773502692)
    (2,10.6666666667)    +- (4.1633319989,4.1633319989)
    (3,8.6666666667)   		+- (2.0816659995,2.0816659995)
    (4,8.33333333334)   +- (3.0550504633,3.0550504633)
    (5,9)    					+- (4.582575695,4.582575695)
    };
    \end{axis}
    \end{tikzpicture}
    \end{document}
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361
    Mittlerweile bin ich weitergekommen ...

    1. Die Daten aus Excel kopiere ich einfach in die tex-Datei.

    2. Fehlerbalken gehen noch immer nicht (bin weiter daran).

    3. bin weiter dran

    4. lässt sich einstellen

    Code:
    \usepackage{pgfplots}
    \pgfplotsset{every axis label/.append style={font=\sffamily\small},
    every axis legend label/.append style={font=\sffamily\small},
    every tick label/.append style={font=\sffamily\small},
    every axis title/.append style={font=\sffamily\bfseries}}
    Neues Problem: Die Säulen sind nicht mehr schwarz gefüllt mit schwarzem Rand

    Der bisherige Code:
    Code:
    \documentclass{scrbook}
    \usepackage{xltxtra} % XeLaTeX
    \usepackage{pgfplots}
    \usepackage{filecontents}
    \usepackage{tikz}
    
    
    \begin{document}
    
    \begin{filecontents}{data.dat}
    Gruppe X-Position MW			SD
    Sham	1	8.15525		        0.5773502692
    STZ	2	12.15485             	4.1633319989
    MG	3	8.354654         	2.0816659995
    MG+Ala  4	8.5646546		3.0550504633
    MG+BSO  5	9			4.582575695
    \end{filecontents}
    
    \begin{tikzpicture}
    \begin{axis}[
    ylabel=EC/P,
    ybar,
    width=10cm,
    ymin=0,
    ymax=16.5,
    bar width=20pt,
        xtick=data,
        xticklabels from table={data.dat}{Gruppe}
    ]
    \addplot table [
        x=X-Position,
        y=MW,
        error bars/.cd=SD% ???
    ] {data.dat};
    \end{axis}
    \end{tikzpicture}
    \end{document}
    Geändert von ElGato (29-10-2012 um 07:53 Uhr)
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  3. #3
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Die Fehlerbalken lassen sich wie folgt definieren:
    - für table für die SD-SPalte als y error übergeben
    - bei den Ploteinstellungen kommt dann "error bars/.cd, y dir=plus, y explicit" hinzu
    - für alle Plots in einer Axis-Umgebung musst du "error bars/.cd, error bars/y dir=plus, error bars/y explicit" bei den Optionen für Axis angeben

    Die schwarze Farbe habe ich auch nochmal explizit als Option für den Plot übergeben.

    Code:
    \documentclass{scrbook}
    %\usepackage{xltxtra} % XeLaTeX
    \usepackage{pgfplots}
    \usepackage{filecontents}
    \usepackage{tikz}
    %\pgfplotsset{compat=1.7}
    
    \begin{document}
    
    \begin{filecontents}{data.dat}
    Gruppe X-Position MW			SD
    Sham	1	8.15525		        0.5773502692
    STZ	2	12.15485             	4.1633319989
    MG	3	8.354654         	2.0816659995
    MG+Ala  4	8.5646546		3.0550504633
    MG+BSO  5	9			4.582575695
    \end{filecontents}
    
    \begin{tikzpicture}
    \begin{axis}[
    ylabel=EC/P,
    ybar,
    width=10cm,
    ymin=0,
    ymax=16.5,
    bar width=20pt,
        xtick=data,
        xticklabels from table={data.dat}{Gruppe} 
    % alternativ für mehrere Plots mit Fehlerbalken
    %, error bars/.cd, error bars/y dir=plus, error bars/y explicit
    ]
    \addplot[draw=black, fill=black, error bars/.cd, y dir=plus, y explicit] table [
        x=X-Position,
        y=MW,
        y error=SD
    ] {data.dat};
    \end{axis}
    \end{tikzpicture}
    \end{document}

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361

    Thumbs up Vielen Dank!

    Läuft perfekt
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  5. #5
    Registrierter Benutzer
    Registriert seit
    04.09.2013
    Beiträge
    5
    Hallihallo! Ich habe zwei Fragen zu obigem Beispiel. Wäre nett, wenn mir da jemand weiterhelfen könnte!

    1) Gibt es Einschränkungen für das Benennen der dat-Datei?

    \begin{filecontents}{data.dat}

    Bei mir funktioniert ein anderer Name bislang nicht, auch wenn ich

    xtick=data,
    xticklabels from table={data.dat}{Gruppe}

    und

    ] {data.dat};
    \end{axis}

    angleiche.

    2) Könnte mir jemand zeigen, wie man in das obige Beispiel zu jedem Balken jeweils noch eine zweiten Balken hinzufügt - mit anderen x-Werten, in anderer Farbe aber mit derselben Beschriftung?

    LG, Nesrin

  6. #6
    Registrierter Benutzer
    Registriert seit
    03.09.2013
    Beiträge
    10
    Bei xtick=data, darfst du glaube ich nichts anpassen. Für weitere Balken fügst du ein \addplot mit den entsprechenden Einstellungen hinzu.

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.09.2013
    Beiträge
    5
    Vielen Dank, sudo! Das läuft perfekt.

  8. #8
    Registrierter Benutzer
    Registriert seit
    04.09.2013
    Beiträge
    5
    Ach, jetzt häng ich wieder an was. Gibt es eine Möglichkeit, eine waagrechte Linie in das Balkendiagramm zu zeichnen? Eine, die das Ende eines Balkens markiert und die anderen schneidet, damit Unterschiede deutlich werden?

    Bis jetzt habe ich sowas hier ausprobiert (für Mac!):

    \documentclass[a4paper,12pt]{article}
    \usepackage[ngerman]{babel}
    \usepackage[applemac]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{pdfpages}
    \usepackage{pgfplots}
    \usepackage{tikz}
    \usepackage{filecontents}




    \usepackage{color}
    \usepackage{colortbl}
    \definecolor{grauschwarz}{rgb}{0.45,0.45,0.45}
    \definecolor{grau}{rgb}{0.6,0.6,0.6}
    \definecolor{dunkelgrau}{rgb}{0.8,0.8,0.8}
    \definecolor{hellgrau}{rgb}{0.95,0.95,0.95}





    \begin{document}


    \begin{figure}
    \begin{center}
    \begin{filecontents}{anzahl.dat}
    Gruppe X-Position MW SD
    A 1 4.7 1.5
    B 2 5.4 1.8
    C 3 5.6 2.4
    D 4 7.1 1.2

    \end{filecontents}

    \begin{tikzpicture}
    \begin{axis}[
    title = {default},
    ybar,
    width=12cm,
    ymin=0,
    ymax=10,
    bar width=20pt,
    xtick=data,
    xticklabels from table={anzahl.dat}{Gruppe},
    ]
    \addplot[draw=black, fill=dunkelgrau,
    error bars/.cd, y dir=both, y explicit] table [
    x=X-Position,
    y=MW,
    y error=SD
    ] {anzahl.dat};
    \addplot+[sharp plot] coordinates
    {(0.75,4.7) (4.25,4.7)};
    \end{axis}
    \end{tikzpicture}
    \caption{default}
    \label{fig:anzahl}
    \end{center}
    \end{figure}


    \end{document}
    Aber, am schönsten fände ich es, wenn die Linie von Anfang bis Ende des Diagramms ginge, ohne dass sich etwas verschiebt. Gibt es einen bestimmten Grund warum sie rot ist? Kann man den Linienstil ändern (gestrichelt)?
    Geändert von Nesrin (08-09-2013 um 19:40 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    04.09.2013
    Beiträge
    5
    Es wäre in dem Fall wohl auch besser, wenn das eher als Hilfslinie und nicht als neuer Plot angesehen würde. Dann würde sich der eigentliche Plot auch nicht durch die Linie verschieben....?

  10. #10
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Dann lass doch an Stelle des zweiten Plots einfach eine gestrichelte Linie zeichnen, zum Beispiel mit:

    Code:
    \draw[dashed] (axis cs:0,4.7)--(axis cs:8,4.7);

  11. #11
    Registrierter Benutzer
    Registriert seit
    04.09.2013
    Beiträge
    5
    Ja, das funktioniert. Ohje - so naheliegend... Danke!

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •