Seite 1 von 1

verschiedene gestapelte Säulendiagramme mit gleichen Rahmen

Verfasst: Mo 21. Okt 2019, 20:25
von pflaume92
Hallo liebe goLaTeX-Gemeinde,

Ich würde gerne eine Reihe von gestapelten Säulendiagrammen in meiner Masterarbeit nutzen. Da ich bereits Grafiken habe, sollen dieses gestapelten Säulendiagramme analog aussehen. Das heißt der Rahmen soll in seiner gesamten Ausführung identisch sein (Beschriftung x und y, sowie Größe etc). Leider bin ich sehr unbeholfen in der Thematik und bräuchte eure Hilfe.

Ich habe bereits selber gelesen, dass es {axis}[ybar stacked] gibt. Aber ich weiß leider nicht wie ich diese analog zu meiner bisherigen Grafik einsetzen kann :(

Ich hab einfach just for fun mal eine zweite Säulenreihe eingefügt, die natürlich die vorherige überschreibt.

Code: Alles auswählen

\documentclass{scrreprtl} 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage[ngerman]{babel} 
\usepackage{pgfplots} 

\begin{document}
\begin{figure}[H]\centering
\begin{tikzpicture}
 
  \draw (0cm,0cm) -- (14cm,0cm);  %Abzisse
  \draw (0cm,0cm) -- (0cm,-0.1cm);  %linkes Ende der Abzisse
  \draw (14cm,0cm) -- (14cm,-0.1cm);  %rechtes Ende der Abzisse 
  \draw (0cm,0cm) -- (0cm,4.5cm);  %Ordinate
  \draw (0cm,0cm) -- (-0.1cm,0cm);  %unteres Ende der Ordinate
  \draw (0cm,4.5cm) -- (-0.1cm,4.5cm) node [left] {$\sum\nolimits$}; %oberes Ende der Ordinate
  \foreach \x in {0,10,20,30,40}  %Hilfslinien
    \draw[gray!50, text=black] (-0.1 cm,\x mm) -- (14 cm,\x mm) 
      node at (-0.5 cm,\x mm) {\x};  %Beschriftung der Hilfslinien
    \node at (7.0cm,5cm) {Überschrift};  %Überschrift
  \foreach \x/\y/\country in {0.5/20/1,  
                              2.5/18/2,
                              4.5/16/3,
                              6.5/14/4,
                              8.5/12/4,
                              10.5/10/5,
                              12.5/8/6}
    {
     \draw[fill=blue] (\x cm,0cm) rectangle (1cm+\x cm,\y mm)
       node at (0.5cm + \x cm,\y mm / 2) {\y};}
    \foreach \x/\y/\country in {0.5/14/1,  
                              2.5/12/2,
                              4.5/10/3,
                              6.5/8/4,
                              8.5/6/4,
                              10.5/4/5,
                              12.5/2/6}
    {
     \draw[fill=yellow] (\x cm,0cm) rectangle (1cm+\x cm,\y mm)
       node at (0.5cm + \x cm,\y mm / 2) {\y};
     \node[rotate=0, left] at (0.75 cm +\x cm,-0.35cm) {\country};
    };
\end{tikzpicture}
\caption{Bezeichnung}
		\label{fig:Bezeichnung}	
\end{figure}   
\end{document}
Als Ausblick was ich damit machen möchte:
- es sollen bis zu 6 Säulen auf der x Achse abgetragen werden
- es sollen bis zu 5 Säulen aufeinander gestapelt werden (z.B. weil Antwort gegeben wurde von Personenkreis 1, 2, 3, 4 und 5)
- dementsprechend benötigt die Grafik dann noch eine Legende für die 5 Personenkreise

Weiterführend soll dann auf Basis dieser neuen Grafik noch eine zweite Art entstehen. Stellt euch vor diese oben erstellte Grafik gehört zu einer Frage. Für die zweite Art sollen 5 Fragen gleichzeitig dargestellt werden. Das heißt, hier sollen dann die Säulen je Frage aneinander gerückt, sowie verschmälert werden, sodass 5 Fragen in der Grafik Platz finden. Legende des Personenkreises bleibt gleich. Wobei ich denke das ich diese zweite Grafik dann evtl. selber hinbekommen könnte :)

Ich hoffe ich konnte es einigermaßen erklären was ich haben möchte und bitte um Hilfe bzw. um ein Minimalbeispiel von euch, sodass ich mir das selber fertig basteln kann.

Freundliche Grüße
Pflaume92

Re: verschiedene gestapelte Säulendiagramme mit gleichen Rah

Verfasst: Mo 21. Okt 2019, 20:51
von Bartman
pflaume92 hat geschrieben:Ich habe bereits selber gelesen, dass es {axis}[ybar stacked] gibt. Aber ich weiß leider nicht wie ich diese analog zu meiner bisherigen Grafik einsetzen kann
Die Beispiele im Abschnitt 4.5.9 "Stacked Plots" der Dokumentation von pgfplots dürften für die Verwirklichung Deiner Wünsche schon eine gute Ausgangslage bieten.

Off-Topic: In der Bezeichnung der Dokumentklasse ist ein Tippfehler. Die Angabe der Option H gibt ohne das Laden des Pakets float eine Fehlermeldung aus. Beachte bitte die Alternativen zu dieser Option.

Verfasst: Mo 21. Okt 2019, 22:13
von pflaume92
@ Bartman

Danke für deine Antwort und für die verlinkte Dokumentation.

Sry für die Fehler im Minimalbeispiel. Hatte das nur schnell aus meiner gesamten Datei kopiert.

Wie ich ein Säulendiagramm erstelle habe auch schon gefunden. Ich weiß leider nicht wie ich die Achsen und Beschriftungen etc. so anpasse wie es bei meinen vorherigen Grafiken ist.

Verfasst: Mo 21. Okt 2019, 23:45
von Bartman
Die Anpassung der Achsen und Beschriftungen ist in der Tat nicht ganz so trivial. Ich habe die Daten aus einem Beispiel des erwähnten Abschnitts übernommen, damit ich Deine nicht einpflegen muss. Diesen Schritt überlasse ich Dir. :wink:

Zum Vergleich habe ich Dein Beispiel um meines erweitert.

Code: Alles auswählen

\documentclass[border=2pt]{standalone}
%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}

\pgfplotsset{compat=1.16}

\usetikzlibrary{arrows.meta}

\begin{document}
\begin{tikzpicture}
\newcommand{\xmax}{14}
\newcommand{\ymax}{4.5}
\draw 
	(0,0) -- (\xmax,0)  %Abzisse
	(0,0) -- (0,-0.1)  %linkes Ende der Abzisse
	(\xmax,0) -- (\xmax,-0.1)  %rechtes Ende der Abzisse
	(0,0) -- (0,\ymax)  %Ordinate
	(0,0) -- (-0.1,0)  %unteres Ende der Ordinate
	(0,\ymax) -- (-0.1,\ymax) node [left] {$\sum$} %oberes Ende der Ordinate
;
\foreach \x in {0,10,20,30,40}  %Hilfslinien
	\draw[gray!50, text=black] (-0.1,\x mm) -- (14,\x mm)
		node at (-0.5,\x mm) {\x};  %Beschriftung der Hilfslinien
\node at (\xmax/2,\ymax+0.5) {Überschrift};  %Überschrift
\foreach \x/\y in {0.5/20,  
                   2.5/18,
                   4.5/16,
                   6.5/14,
                   8.5/12,
                   10.5/10,
                   12.5/8}
{
	\draw[fill=blue] (\x,0) rectangle (1+\x,\y mm)
		node [text=white] at (0.5 + \x,\y mm - 3mm) {\y};% / 2 durch - 3mm ersetzt
}
\foreach \x/\y/\country in {0.5/14/1,  
                            2.5/12/2,
                            4.5/10/3,
                            6.5/8/4,
                            8.5/6/4,
                            10.5/4/5,
                            12.5/2/6}
{
	\draw[fill=yellow] (\x,0) rectangle (1+\x,\y mm)
		node at (0.5 + \x,\y mm / 2) {\y};
	\node[left] at (0.75 +\x,-0.35) {\country};
};
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
	title=Überschrift,
	ybar stacked,
	nodes near coords,
	bar width=0.4,
	ymin=0,
	legend style={
		at={(current bounding box.south-|current axis.south)},
		anchor=north,
		legend columns=-1
	},
	ylabel=$\sum$,
	every axis y label/.style={
    	at={(current axis.north west)}, 
    	anchor=east
	},
	x tick label style={yshift=-1mm},
	axis lines*=left,
	y axis line style={-Bar[left]},
	x axis line style={-Bar[right]},
	ymajorgrids
]
\addplot [fill=yellow] coordinates
    {(0,1) (1,1) (2,3) (3,2) (4,1.5)};
\addplot [fill=blue, text=white] coordinates
    {(0,1) (1,1) (2,3) (3,2) (4,1.5)};
\legend{Pk 1, Pk 2}
\end{axis}
\end{tikzpicture}
\end{document}
Die Position der Legende und die Einstellung des Stils für die Achsenlinien stammen aus einem Beispiel von esdd.