verschiedene gestapelte Säulendiagramme mit gleichen Rahmen

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:

Markdown is OFF

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: verschiedene gestapelte Säulendiagramme mit gleichen Rahmen

von Bartman » Mo 21. Okt 2019, 23:45

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.

von pflaume92 » Mo 21. Okt 2019, 22:13

@ 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.

Re: verschiedene gestapelte Säulendiagramme mit gleichen Rah

von Bartman » Mo 21. Okt 2019, 20:51

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.

verschiedene gestapelte Säulendiagramme mit gleichen Rahmen

von pflaume92 » Mo 21. Okt 2019, 20:25

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

Nach oben