Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Tabellen und Grafiken erstellen und anordnen


Zoid
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Do 12. Mär 2020, 13:48

Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von Zoid »

Moin moin zusammen,

ich würde gerne folgende Grafik (schematisches Beispiel) in mein Dokument abbilden:
Bild

Das Säulendigramm soll bei Nutzung eines Stoffs A (blau) den Anteil von Stoff B vor einem Prozess (orange) und nach einem Prozess (gelb) darstellen. Das Ganze dann für 5 verschiedene Typen von Stoff A (hier nur durch zwei römische Zahlen beispielhaft gekennzeichnet). Um dies in einem Säulendiagram umzusetzen benötige ich die Kombination aus gestapelten und parallel angeordneten Säulen.

Z.Z. versuch ich das mit pgfplots in Lualatex umzusetzen, stoße aber an meine Grenzen, die umfängreichen Funktionen dieses Packets entsprechend sinnhaft miteinander zu kombinieren. Einzelne Sachen bekomme ich hin, aber die Verbindung fehlt mir, weshalb ich hier keinen Code geschrieben habe, da dieser noch weniger als ein Tropfen auf einem heißen Stein wäre.
Hilfestellung benötige ich für...
... das Implementieren von zwei verschiedenen Säulenbreiten in einem Diagramm.
... das Stapeln und nebeneinander Versetzen von mehreren Säulen
... Änderung der Nummerierung der x-Achse in römische Zahlen

https://ftp.rrze.uni-erlangen.de/ctan/g ... fplots.pdf
Ich arbeite mit den Beispielen auf S. 84-86 und 97.

Ansätze oder Stichworte würden mir bereits weiterhelfen, da ich in der 500 Seiten Dokumentation den Überblick verliere. Sobald ich ein ansehnliches Beispiel habe, wird es hier ergänzt werden.

Vielen Dank und viele Grüße,


cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 42
Registriert: Mi 22. Jul 2020, 20:14

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von cis »

Man kann es mit ybar interval oder ybar stacked oder ybar interval stacked sicher professionell machen. Eine Brute-Force-Lösung, nur mit ybar, könnte so aussehen:

5555555.png
5555555.png (5.35 KiB) 418 mal betrachtet

Code: Alles auswählen

%\documentclass[a4paper,12pt]{article}
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
% Farben definieren
% https://html-color-codes.info/colors-from-image/
\definecolor{myorange}{HTML}{ED7D31} 
\definecolor{myyellow}{HTML}{FFC000} 
\definecolor{myblue}{HTML}{4472C4} 
\colorlet{myaxisblue}{myblue!60}
% Diagrammdaten 
\pgfplotstableread[col sep=comma]{
x,     yBlau,     yGelb,     yOrange
1,     2.7,        0,            5.5
2,     2.7,        4.5,         0
4,     2.5,        0,            6.5
5,     2.5,        3.9,         0
}\data

\pgfmathsetlengthmacro\BarWidth{7mm}
\begin{tikzpicture}
\begin{axis}[
ybar,
bar shift=0pt,
bar width=\BarWidth,
x=\BarWidth,
%xtick=data,
xtick={1.5, 4.5},
xticklabels={I, II},
ytick={1,...,6},
every axis plot/.append style={draw=none}, 
ymin=0, 
xmin=0, xmax=7, 
axis lines = middle,
axis line style = {-latex, draw=myaxisblue},
every tick/.style={draw=myaxisblue},
enlarge y limits={abs=0.25, upper},
]
\addplot[fill=myorange] table [y=yOrange] {\data};
\addplot[fill=myyellow] table [y=yGelb] {\data};
\addplot[fill=myblue] table [y=yBlau] {\data};
\end{axis}
\end{tikzpicture}
\end{document}

Zoid
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Do 12. Mär 2020, 13:48

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von Zoid »

cis hat geschrieben:
Di 4. Aug 2020, 16:13

Man kann es mit ybar interval oder ybar stacked oder ybar interval stacked sicher professionell machen. Eine Brute-Force-Lösung, nur mit ybar, könnte so aussehen:

Das ist schon mal optisch eine saubere Lösung. Danke dafür. Muss mir den Code nochmal genauer anschauen.

Hab in der Zwischenzeit folgendes Ergebnis aus verschiedenen Vorlagen zusammenbasteln können, was schon mal etwas in die richtige Richtung geht. Mir gefällt dabei die Angabe der jeweiligen Werte für die y-Achse in den jeweiligen Säulen. Wenn man die später als Summe noch über die Säulen platzieren könnte, wäre das super. Aber zuerst muss das Layout funktionieren, bevor ich da weitermache.Jetzt müsste ich diese schwebende Säule "1" nur noch auf die blauen Abschnitte platzieren können.
ybar stacked hab ich in dem Beispiel verarbeitet. Mit ybar Interval erhalte ich zusammenhängende Flächen, welche bei dem Lesen des Diagramms zu Fehlinterpretationen führen könnte. Eigenständige Säulen wären da schon vorteilhafter.

Bild

Code: Alles auswählen

\documentclass[ngerman,12pt,a4paper]{scrreprt}
\usepackage{fontspec}	% Schriftart
	\setmainfont{Arial}	% =
\usepackage{pgfplots, pgfplotstable} % Säulendiagramm
\pgfplotsset{compat=1.16} % =

\begin{tikzpicture}
\begin{axis}[
ybar stacked,
nodes near coords,
ymin=0,
bar width=0.4,
ybar=0pt,
]
\addplot + [bar width=0.8,bar shift=0] coordinates
{(1,1) (2,1) (3,1) (4,1) (5,1)};
\addplot + [bar shift=-0.2] coordinates
{(1,4) (2,3) (3,2) (4,4) (5,2)};
\addplot + [bar shift=0.2] coordinates 
{(1,1) (2,1) (3,1) (4,1) (5,1)};
\end{axis}
\end{tikzpicture}
[\code]

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 42
Registriert: Mi 22. Jul 2020, 20:14

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von cis »

Zoid hat geschrieben:
Di 4. Aug 2020, 18:32

ybar stacked hab ich in dem Beispiel verarbeitet. Mit ybar Interval erhalte ich zusammenhängende Flächen, ...

Möglicherweise wird es (für die professionelle Umsetzung) weder das eine noch das andere brauchen, sondern die bereits erwähnte plot option ybar interval stacked (vgl. Handbuch).

Ein paar Bemerkungen zum gezeigten Code:

  • Wenn man es gescheit macht, ist die Eingabeform eine Tabelle, die Ausgabe entsprechend ein table plot. Der coordinate plot ist eher geeignet für das Ergänzen einzelner Punkte o.ä.; auch wenn ihn tex.stackexchange fast besessen verwendet, als ob es hier für sowas nichts anderes gäbe. Bei komplexeren Ausgangsdaten wird das schnell unübersichtlich.

  • Man kann schlicht mit \renewcommand*{\familydefault}{\sfdefault} auf serifenlose Schrift umstellen; sofern das Dokument damit geschrieben werden soll. Dann erübrigt sich
    \usepackage{fontspec}
    \setmainfont{Arial}

    und der Code ist gleichwohl mit pdflatex, nicht nur mit lualatex lauffähig; und man benötigt nicht mehr zwingend die Schrift Arial auf seinem System.


cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 42
Registriert: Mi 22. Jul 2020, 20:14

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von cis »

Da der Startpost ellenlang beschreibt, aber kein kurzes Minimalbeispiel angibt, insb. keine exemplarische Tabelle mit Eingangsdaten, ist der Helfer weitgehend auf persönliche Spekulation angewiesen, was da was sein soll und wie sein soll und was wo drannstehen soll.

Als stacked plot lässt sich das auch umsetzen; allerdings wird man diese spezielle Gestalt m.E. nicht ohne entsprechende Manipulationen erreichen.

5555555.png
5555555.png (8.43 KiB) 378 mal betrachtet

Code: Alles auswählen

%\documentclass[a4paper,12pt]{article}
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

% Farben definieren
% https://html-color-codes.info/colors-from-image/
\definecolor{myorange}{HTML}{ED7D31} 
\definecolor{myyellow}{HTML}{FFC000} 
\definecolor{myblue}{HTML}{4472C4} 
\colorlet{myaxisblue}{myblue!60}{} 

% BarWidth
\pgfmathsetlengthmacro\BarWidth{7mm}
% Diagrammdaten 
\pgfplotstableread[col sep=comma]{
x,     yBlau,     yGelb,     yOrange
1,     2.7,        0,           2.5
2,     2.7,        1.8,        0
4,     2.5,        0,           3.6
5,     2.5,        1.6,        0
}\data
%
\pgfplotstablegetelem{0}{yBlau}\of{\data}
\pgfmathsetmacro\BlueSumI{2*\pgfplotsretval}
%
\pgfplotstablegetelem{3}{yBlau}\of{\data}
\pgfmathsetmacro\BlueSumII{2*\pgfplotsretval}

\begin{document}
%Test:  \BlueSumI, %\BlueSumII
\pgfplotsset{/pgf/number format/.cd, fixed,  assume math mode}% seri-
\begin{tikzpicture}[font=\footnotesize\sffamily]% fenlos
\begin{axis}[
ybar stacked,
bar shift=0pt,
bar width=\BarWidth,
x=\BarWidth,
xtick=data,
xtick={1.5, 4.5},
xticklabels={I, II},
ytick={1,...,6},
every axis plot/.append style={draw=none}, 
ymin=0, 
xmin=0, xmax=7, 
axis lines=middle,
axis line style = {-latex, draw=myaxisblue},
every tick/.style={draw=myaxisblue},
enlarge y limits={abs=0.5, upper},
nodes near coords,
]
\addplot[fill=myblue,
nodes near coords={        %\coordindex
\pgfmathparse{\coordindex==1  || \coordindex== 3 ? "" : (\coordindex==0 ? \BlueSumI : \BlueSumII)}\pgfmathresult
}, 
nodes near coords style={xshift=0.5*\BarWidth},
] table [y=yBlau] {\data};
\addplot[fill=myorange] table [y=yOrange] {\data};
\addplot[fill=myyellow] table [y=yGelb] {\data};
\end{axis}
\end{tikzpicture}

\end{document}

PS: So, wie ich es glaube, rausgehört zu haben sollen die nodes near coords die Diagrammdaten wiedergeben.

Zoid hat geschrieben:
Di 4. Aug 2020, 18:32

Mir gefällt dabei die Angabe der jeweiligen Werte für die y-Achse in den jeweiligen Säulen. Wenn man die später als Summe noch über die Säulen platzieren könnte, wäre das super. ....

Wenn bei den blauen Balken die Summe von eigentlich zwei Balken steht, machen aber m.E. die Werte auf der y-Achse keinen besonderen Sinn mehr.

PPS: Gut, also genug investiert. Das obige MWE sollte alles Nötige enthalten.


Zoid
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Do 12. Mär 2020, 13:48

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von Zoid »

cis hat geschrieben:
Di 4. Aug 2020, 19:01

Möglicherweise wird es (für die professionelle Umsetzung) weder das eine noch das andere brauchen, sondern die bereits erwähnte plot option ybar interval stacked (vgl. Handbuch).

Im Handbuch finden sich dazu nur zwei Einträge, die nicht sonderlich aufschlussreich für einen Latexanfänger sind. Dazu fehlt mir dann wohl doch die Erfahrung und ein passendes Beispiel.

cis hat geschrieben:
Di 4. Aug 2020, 19:01

Bei komplexeren Ausgangsdaten wird das schnell unübersichtlich.

Das ist verständlich. Bei meiner Zielanwendung sollen später nur fünf Säulen miteinander verglichen werden, daher habe ich von der Verwendung einer weiteren externen Datei abgesehen. Für den Fall der Fälle weiß ich aber, wo ich dann nachgucken kann. Vielen Dank dafür.
Bezüglich der Schrift Arial habe ich vor ein paar Monaten in meinem Dokument umgestellt auf Lualatex. Es gab auch noch andere Aspekte, die mich dazu gezwungen haben. Da ich an Vorgaben bezüglich der Gestaltung gebunden bin, werde ich diese Strategie bei dem aktuellen Dokument wohl weiter verwenden.

cis hat geschrieben:
Di 4. Aug 2020, 22:39

Da der Startpost ellenlang beschreibt, aber kein kurzes Minimalbeispiel angibt, insb. keine exemplarische Tabelle mit Eingangsdaten, ist der Helfer weitgehend auf persönliche Spekulation angewiesen, was da was sein soll und wie sein soll und was wo drannstehen soll.

Ich hatte es bewusst etwas offen gelassen, da ich in diesem Bereich nicht viel Erfahrung habe, fand ich es unpassend mich frühzeitig auf eine Strategie zu fixieren. Das genannte Beispiel finde ich mit der Implementierung der Tabelle und den Farben interessant. Ich werde versuchen, dies zu übernehmen um Änderungen schneller durchführen zu können.

Aktuell habe ich folgenden Zwischenstand:

Bild

Code: Alles auswählen

\documentclass{article}
\usepackage{pgfplots, pgfplotstable} % Säulendiagramm
\pgfplotsset{compat=1.16} % =

\makeatletter
\newcommand\resetstackedplots{
%\makeatletter
\pgfplots@stacked@isfirstplottrue
%\makeatother
%\addplot [forget plot,draw=none] coordinates{(1,0) (2,0) (3,0)};
}
%\makeatother
\begin{document}

\begin{tikzpicture}
    \pgfplotsset{
        show sum on top/.style={
            /pgfplots/scatter/@post marker code/.append code={%
                \node[
                    at={(normalized axis cs:%
                            \pgfkeysvalueof{/data point/x},%
                            \pgfkeysvalueof{/data point/y})%
                    },
                    anchor=south,
                ]
                {\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}};
            },
        },
    }
\begin{axis}[
	ybar stacked,
	nodes near coords,
	symbolic x coords={I,II},
	xtick=data,
	ymin=0,
	enlarge x limits=0.5,
	legend entries={A,B,C}
]
\addplot +[bar width=1cm,bar shift=0cm] coordinates {(I,1) (II,1)};
\addplot +[bar width=0.5cm,bar shift=-.25cm,show sum on top] coordinates {(I,1) (II,2.5)};

\resetstackedplots

\addplot +[bar width=1cm,bar shift=0cm] coordinates {(I,1) (II,1)};
\addplot +[bar width=0.5cm,bar shift=.25cm,show sum on top] coordinates {(I,0.5) (II,2)};

\end{axis}
\end{tikzpicture}

Mit \resetstackedplots kann ich die blaue Säule erneut zeichnen lassen und die graue Säule entsprechend darüber platzieren. Es sind also zwei sich überlagernde Diagramme. Ist vielleicht etwas geschummelt, aber bisher habe ich daraus noch keinen Nachteil entdecken können. Die Angabe der Summe ist richtig berechnet, wenn auch die Position zentraler über der roten und grauen Säule sein dürfte.
Was könnte man in die eckigen Klammern bei \addplot + ergänzen, um die Position der Summe zu verändern?


cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 42
Registriert: Mi 22. Jul 2020, 20:14

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von cis »

Ja gut, aber Du bleibst weiterhin hartnäckig bei dem coordinate plot, vermutlich weil Du nur dazu Beispiele findest - in diese Form der Umsetzung möchte ich mich nicht reindenken.

Du gibst weiterhin keine (idealerweise verkürzte oder vereinfachte) Rohdatentabelle, wie z.B.
x, yBlau, yGelb, yOrange
1, 2.7, 0, 2.5
2, 2.7, 1.8, 0
.....

an. Das möchtest Du "bewusst etwas offen lassen".

Anstatt mit nicht unkomplizierten Hack-Methoden ("\resetstackedplots") aufzuwarten, die vll. brauchbar, vll. sogar nötig sind, wäre wahrscheinlich eine schlichte Skizze (Paint etc.) hilfreich, die, von o.g. Tabellendaten ausgehend, anzeigt was da wo stehen und platziert sein soll.

PS: Zu dem gezeigten Code an sich, grob überschlagen: Die node, die die Summe setzt, braucht den gleichen xshift wie bei bar shift festgelegt. Also ist es sinnvoll xshift und bar shift in der Form xshift=#1 und bar shift=#1 in die Definition von show sum on top aufzunehmen.


Zoid
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Do 12. Mär 2020, 13:48

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von Zoid »

Ich habe die Tabelle und die Farben in mein Beispiel implementiert, dafür die Summe weggelassen. Es ist weitaus übersichtlicher so. Als Beispieltabelle kann die Tabelle aus diesem beispiel genutzt werden.

Code: Alles auswählen

\documentclass{article}
\usepackage{pgfplots, pgfplotstable} % Säulendiagramm
\pgfplotsset{compat=newest} % =

\begin{document}
\begin{tikzpicture}

\pgfplotstableread[col sep=comma]{
x,	yBlau,	yGelb,	yOrange
1,	2.7,		0,		2
1,	2.7,		1.5,		0
2,	2.5,		0,		2.5
2,	2.5,		1,		0
}\data

\definecolor{myorange}{HTML}{ED7D31} 
\definecolor{myyellow}{HTML}{FFC000} 
\definecolor{myblue}{HTML}{4472C4} 
    
\begin{axis}[ ybar stacked, nodes near coords, xtick=data, xtick={1,2}, xticklabels={Gruppe I, Gruppe II}, ymin=0, enlarge x limits=0.5, legend entries={A,B,C} ] \addplot [fill=myblue,bar width=1cm] table [y=yBlau] {\data}; \addplot [fill=myorange,bar shift=-0.25cm, bar width=0.5cm] table [y=yOrange] {\data}; \addplot [fill=myyellow,bar shift=0.25cm, bar width=0.5cm] table [y=yGelb] {\data}; \end{axis} \end{tikzpicture} \end{document}

Bild

Dennoch hätte ich die Summer gerne noch drinne (wie eingezeichnet).
Ich habe die Grafik testweise in mein Hauptdokument integriert. Dabei ist mir aufgefallen, dass die Legende und die Beschriftung der X-Achse in Arial erfolgt (so wie gefordert), allerdings die Beschriftung der Y-Achse und die Zahlen dargestellt werden wie hier im Beispiel, leider auch mit "." statt mit ",". Woran kann das liegen bzw. wie könnte man das umstellen? In anderen Elementen (Bilder, Ablaufdiagramm, Tabellen) meines Hauptdokumentes tritt dies nicht auf.


Zoid
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Do 12. Mär 2020, 13:48

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von Zoid »

Die Positionierung habe ich hinbekommen. Nachdem ich keine Alternative gefunden habe, musste ich doch auf das zuvor eliminierte Element zurückgreifen. Die zuvor genannte Verwendung von xshift=#1 habe ich nicht ganz verstanden. Ich gehe davon aus, dass man sich die Änderung der Werte vereinfachen kann und nicht alle Werte manuell umschreiben muss, ist das richtig? Wenn ich eine Änderungen bei den Breiten der Säulen vornehmen würde, dann wäre es natürlich vorteilhaft mit Variablen zu arbeiten, die dann aber nur lokal für diese Abbildung definiert wären.

EDIT: Hab die Variablen eingefügt und es klappt soweit ganz gut. Code ist auch aktualisiert.

Bild

Code: Alles auswählen

\documentclass{article}
\usepackage{pgfplots, pgfplotstable} % Säulendiagramm
\pgfplotsset{compat=newest} % =
\usepackage{fontspec}	% Schriftart
	\setmainfont{Arial}	% =

\begin{document}
\begin{tikzpicture}%[font=\footnotesize\sffamily]
\def\x{1cm}


\pgfplotsset{
    show sum on top left/.style={/pgfplots/scatter/@post marker code/.append code={%
            \node[at={(normalized axis cs:%
                        \pgfkeysvalueof{/data point/x},%
                        \pgfkeysvalueof{/data point/y})%
                },anchor=south,xshift=-\x/4]{\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}};},},}
                
\pgfplotsset{
    show sum on top right/.style={/pgfplots/scatter/@post marker code/.append code={%
            \node[at={(normalized axis cs:%
                        \pgfkeysvalueof{/data point/x},%
                        \pgfkeysvalueof{/data point/y})%
                },anchor=south,xshift=\x/4]{\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}};},},}                    

\pgfplotstableread[col sep=comma]{
x,	yBlau,	yGelb,	yOrange
1,	2.7,		0,		2
1,	2.7,		1.5,		0
2,	2.5,		0,		2.5
2,	2.5,		1,		0
}\data

\definecolor{myorange}{HTML}{ED7D31} 
\definecolor{myyellow}{HTML}{FFC000} 
\definecolor{myblue}{HTML}{4472C4} 
    
\begin{axis}[ ybar stacked, nodes near coords, xtick=data, xtick={1,2}, xticklabels={Gruppe I, Gruppe II}, ymin=0, enlarge x limits=0.5, legend entries={A,B,C} ] \addplot [fill=myblue,bar width=\x] table [y=yBlau] {\data}; \addplot [fill=myorange,bar shift=-\x/4, bar width=\x/2,show sum on top left] table [y=yOrange] {\data}; \addplot [fill=myyellow,bar shift=\x/4, bar width=\x/2,show sum on top right] table [y=yGelb] {\data}; \end{axis} \end{tikzpicture} \end{document}

Ich bastel noch weiter an der Schrift und der Darstellung der Zahlen rum.

Zuletzt geändert von Zoid am Mi 5. Aug 2020, 14:58, insgesamt 1-mal geändert.

cis
Forum-Anfänger
Forum-Anfänger
Beiträge: 42
Registriert: Mi 22. Jul 2020, 20:14

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von cis »

Man könnte die Zeilensummen aus der Tabelle herausbaldowern und dann als nodes near coords platzieren; da aber letztere schon anderweitig verwendet werden, scheint mir das Einfachste, den von Dir geposteten Stil show sum on top zu verwenden.
Dabei muss -wie gesagt- die node, die die Summe anzeigt, den gleichen xshift haben wie der bar shift; also muss xshift=#1 und bar shift=#1 in die Definition aufgenommen werden.

5555555.png
5555555.png (5.64 KiB) 327 mal betrachtet

€dit: Da die Anpassung sonst für andere bar widths umständlich wird, habe ich noch ein
\pgfmathsetlengthmacro\BarWidth{8.5mm} ergänzt.

Code: Alles auswählen

%\documentclass{article}
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=newest} 

\pgfplotsset{
show sum on top/.style={
            /pgfplots/scatter/@post marker code/.append code={%
                \node[red, xshift=#1, 
                    at={(normalized axis cs:%
                            \pgfkeysvalueof{/data point/x},%
                            \pgfkeysvalueof{/data point/y})%
                    },
                    anchor=south,
                ]
                {\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}};
            }, bar shift=#1, 
        }, 
}

% Farben
\definecolor{myorange}{HTML}{ED7D31} 
\definecolor{myyellow}{HTML}{FFC000} 
\definecolor{myblue}{HTML}{4472C4} 

% Daten
\pgfplotstableread[col sep=comma]{
x,	yBlau,	yGelb,	yOrange
1,	2.7,		0,		2
1,	2.7,		1.5,		0
2,	2.5,		0,		2.5
2,	2.5,		1,		0
}\data

\pgfmathsetlengthmacro\BarWidth{8.5mm}
\begin{document}
\pgfplotsset{/pgf/number format/.cd, fixed,  assume math mode}% seri-
\begin{tikzpicture}[font=\footnotesize\sffamily]% fenlos
\begin{axis}[
ybar stacked,
nodes near coords,
%xtick=data, % das....
xtick={1,2}, % ... wird von dem überschrieben 
xticklabels={Gruppe I, Gruppe II},
ymin=0,
enlarge x limits=0.5,
legend entries={A,B,C}
]
\addplot [fill=myblue, bar width=\BarWidth] table[y=yBlau]{\data};
\addplot [fill=myorange, bar width=0.5*\BarWidth, show sum on top=-0.25*\BarWidth] table[y=yOrange]{\data};
\addplot [fill=myyellow, bar width=0.5*\BarWidth, show sum on top=0.25*\BarWidth] table[y=yGelb]{\data};
\end{axis}
\end{tikzpicture}
\end{document}
Zuletzt geändert von cis am Do 6. Aug 2020, 15:20, insgesamt 2-mal geändert.

Antworten