Säulendiagramm Tikz

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: Säulendiagramm Tikz

von Leilamartin » Fr 24. Nov 2017, 15:13

Danke! Funktioniert einwandfrei. ;-)

von esdd » Fr 24. Nov 2017, 13:15

Du kannst beispeilsweise xtick=data ergänzen. Das zweite Problem kannst Du durch Angabe von ymin=0 beheben. Beide Angaben gehören in die axis Optionen.

von Leilamartin » Fr 24. Nov 2017, 12:21

Sorry, jetzt habe ich doch noch zwei Rückfragen.

1.) Es geschehen seltsame Dinge, wenn ich die Anzahl der Säulen verändere.

Schmeiße ich eine Säule (bspw. die Unterschicht) raus, ist alles fein:
\documentclass{scrbook} 

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel} 
\usepackage{pgfplots} 
\pgfplotsset{ 
  compat=1.13, 
} 

\begin{document} 
\begin{tikzpicture} 
  \begin{axis}[ 
    ybar, 
    hide y axis,%keine y-Achse 
    axis x line* = bottom,%x-Achse nur unten 
    enlarge x limits = .1,%x-Achse erweitern 
    x axis line style = {-},%kein Pfeil 
    enlarge y limits={.1,upper},%Anpassung des Abstandes x-Achse - Diagramm 
    bar width=20pt, 
    nodes near coords, 
    title = {Sinnvolle Überschrift},%Diagramm-Titel 
    symbolic x coords ={
    %Unterschicht,
    Arbeiterschicht,
    Mittelschicht,
    obere Mittelschicht,
    Oberschicht,
    Einstufung abgelehnt
    }, 
    x tick label style={rotate=45,anchor=north east}, 
    ] 
    \addplot[fill=black,forget plot] coordinates {%forget plot ergänzt für korrekten Abstand zum "2." plot 
    %  (Unterschicht,1) 
      (Arbeiterschicht,1) 
      (Mittelschicht,3) 
      (obere Mittelschicht,0) 
     (Oberschicht,1) 
    }; 
    \addplot[fill=white] coordinates { 
      (Einstufung abgelehnt,1) 
    }; 
  \end{axis} 
\end{tikzpicture} 
\end{document} 
Schmeißt ich zwei Säulen raus, dann passieren komische Dinge. Die x-Achse bekommt Dopplungen bei den Labels:
\documentclass{scrbook} 

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel} 
\usepackage{pgfplots} 
\pgfplotsset{ 
  compat=1.13, 
} 

\begin{document} 
\begin{tikzpicture} 
  \begin{axis}[ 
    ybar, 
    hide y axis,%keine y-Achse 
    axis x line* = bottom,%x-Achse nur unten 
    enlarge x limits = .1,%x-Achse erweitern 
    x axis line style = {-},%kein Pfeil 
    enlarge y limits={.1,upper},%Anpassung des Abstandes x-Achse - Diagramm 
    bar width=20pt, 
    nodes near coords, 
    title = {Sinnvolle Überschrift},%Diagramm-Titel 
    symbolic x coords ={
    %Unterschicht,
    %Arbeiterschicht,
    Mittelschicht,
    obere Mittelschicht,
    Oberschicht,
    Einstufung abgelehnt
    }, 
    x tick label style={rotate=45,anchor=north east}, 
    ] 
    \addplot[fill=black,forget plot] coordinates {%forget plot ergänzt für korrekten Abstand zum "2." plot 
    %  (Unterschicht,1) 
    %  (Arbeiterschicht,1) 
      (Mittelschicht,3) 
      (obere Mittelschicht,0) 
     (Oberschicht,1) 
    }; 
    \addplot[fill=white] coordinates { 
      (Einstufung abgelehnt,1) 
    }; 
  \end{axis} 
\end{tikzpicture} 
\end{document} 

2.) Wie kann ich bewirken, dass die Säulen stets so hoch sind, wie ihr numerischer Wert ist? Also so sollte es nicht aussehen (das passiert, da es keine 0 mehr gab):
\documentclass{scrbook} 

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel} 
\usepackage{pgfplots} 
\pgfplotsset{ 
  compat=1.13, 
} 

\begin{document} 
\begin{tikzpicture} 
  \begin{axis}[ 
    ybar, 
    hide y axis,%keine y-Achse 
    axis x line* = bottom,%x-Achse nur unten 
    enlarge x limits = .1,%x-Achse erweitern 
    x axis line style = {-},%kein Pfeil 
    enlarge y limits={.1,upper},%Anpassung des Abstandes x-Achse - Diagramm 
    bar width=20pt, 
    nodes near coords, 
    title = {Sinnvolle Überschrift},%Diagramm-Titel 
    symbolic x coords ={
    Unterschicht,
    Arbeiterschicht,
    Mittelschicht,
    obere Mittelschicht,
    Oberschicht,
    Einstufung abgelehnt
    }, 
    x tick label style={rotate=45,anchor=north east}, 
    ] 
    \addplot[fill=black,forget plot] coordinates {%forget plot ergänzt für korrekten Abstand zum "2." plot 
      (Unterschicht,1) 
      (Arbeiterschicht,1) 
      (Mittelschicht,3) 
      (obere Mittelschicht,4) %%<- hier war "früher" eine 0 
     (Oberschicht,1) 
    }; 
    \addplot[fill=white] coordinates { 
      (Einstufung abgelehnt,1) 
    }; 
  \end{axis} 
\end{tikzpicture} 
\end{document} 

Und nochmals Danke! ;-)

von Leilamartin » Fr 24. Nov 2017, 11:56

Danke! Das freut mich sehr. LG und schönen Tag

von markusv » Fr 24. Nov 2017, 11:53

Leilamartin hat geschrieben:Dass mir wildfremde Menschen "einfach so" und dann auch noch so ausführlich und kompetent helfen, beeindruckt mich wirklich. Danke!
Das ist ja der Sinn der Sache. Und als Helfer lernt man ja auch immer noch was nebenbei. Keiner Rede wert also! :)

Du kannst den Abstand per enlarge y limits={.1,upper}, einstellen. Das upper sorgt dafür, dass der Abstand nur oben wirkt, unten erhältst du damit den gewünschten Effekt. Ohne den Abstand oben enlarge y limits={}, oder {0} rutscht die Überschrift unschön in das Diagramm bzw. die Beschriftung.

Im gesamten:
\documentclass{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{
  compat=1.13,
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    ybar,
    hide y axis,%keine y-Achse
    axis x line* = bottom,%x-Achse nur unten
    enlarge x limits = .1,%x-Achse erweitern
    x axis line style = {-},%kein Pfeil
    enlarge y limits={.1,upper},%Anpassung des Abstandes x-Achse - Diagramm
    bar width=20pt,
    nodes near coords,
    title = {Sinnvolle Überschrift},%Diagramm-Titel
    symbolic x coords ={Unterschicht,Arbeiterschicht,Mittelschicht,obere Mittelschicht, Oberschicht,Einstufung abgelehnt},
    x tick label style={rotate=45,anchor=north east},
    ]
    \addplot[fill=black,forget plot] coordinates {%forget plot ergänzt für korrekten Abstand zum "2." plot
      (Unterschicht,1)
      (Arbeiterschicht,1)
      (Mittelschicht,3)
      (obere Mittelschicht,0)
      (Oberschicht,1)
    };
    \addplot[fill=white] coordinates {
      (Einstufung abgelehnt,1)
    };
  \end{axis} 
\end{tikzpicture}
\end{document}

von Leilamartin » Fr 24. Nov 2017, 11:39

Boah! Danke für die schnelle Antwort. Das ist ja ein Traum.

Noch eine kurze Nachfrage: Wie kann ich die x-Achse nach oben schieben, sodass die Säulen direkt aus der x-Achse rauswachsen?

Und nochmals vielen lieben Dank. Dass mir wildfremde Menschen "einfach so" und dann auch noch so ausführlich und kompetent helfen, beeindruckt mich wirklich. Danke!

von markusv » Fr 24. Nov 2017, 11:35

Hallo nochmal :)
\documentclass{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{
  compat=1.13,
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    ybar,
    hide y axis,%keine y-Achse
    axis x line = bottom,%x-Achse nur unten
    enlarge x limits = .1,%x-Achse erweitern
    x axis line style = {-},%kein Pfeil
    bar width=20pt,
    nodes near coords,
    title = {Sinnvolle Überschrift},%Diagramm-Titel
    symbolic x coords ={Unterschicht,Arbeiterschicht,Mittelschicht,obere Mittelschicht, Oberschicht,Einstufung abgelehnt},
    x tick label style={rotate=45,anchor=north east},
    ]
    \addplot[fill=black,forget plot] coordinates {%forget plot ergänzt für korrekten Abstand zum "2." plot
      (Unterschicht,1)
      (Arbeiterschicht,1)
      (Mittelschicht,3)
      (obere Mittelschicht,0)
      (Oberschicht,1)
    };
    \addplot[fill=white] coordinates {
      (Einstufung abgelehnt,1)
    };
  \end{axis} 
\end{tikzpicture}
\end{document}

Säulendiagramm Tikz

von Leilamartin » Fr 24. Nov 2017, 11:09

Hallo liebes Forum,

ich benötige einige Säulendiagramme und habe mich im Forum etwas Schlau gemacht und kann mit Tiks nun so was malen:
\documentclass{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{
  compat=1.13,
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    ybar,
    bar width=20pt,
    nodes near coords,
    symbolic x coords ={Unterschicht,Arbeiterschicht,Mittelschicht,obere Mittelschicht, Oberschicht,Einstufung abgelehnt},
    x tick label style={rotate=45,anchor=north east},
    ]
    \addplot[fill=black] coordinates {
      (Unterschicht,1)
      (Arbeiterschicht,1)
      (Mittelschicht,3)
      (obere Mittelschicht,0)
      (Oberschicht,1)
      (Einstufung abgelehnt,1)
    };
  \end{axis} 
\end{tikzpicture}
\end{document}
Ich bin schon fast zufrieden und würde mich freuen, wenn ihr mir bei folgenden Fragen helfen könnten:

a) Wie bekomme ich die Box, die um das ganze Diagramm geht weg? Und auch die y-Achse soll weg.
b) Wie bekomme ich eine x-Achse hin? (Eine x-Achse ohne Pfeil nach rechts)
c) Was ist die sinnvollste Art, den Säulen unterschiedliche Farben zu geben? (Die Säule rechts soll ohne Füllung bzw. weiß sein)
d) Wie mache ich sinnvoll eine Überschrift über das Diagramm?
e) Ist das "guter" Tikz-Stil oder gibt es eine elegantere Möglichkeit, Säulendiagramme zu erstellen?

Besten Dank für eure Hilfe und liebe Grüße

Laila

Nach oben