Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Tabellen und Grafiken erstellen und anordnen


Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von Zoid »

Ich hab den Code jetzg soweit zusammengeschrieben, dass ich mit dem Ergebnis zufrieden bin. Denke, dass ich damit ganz gut weiterarbeiten kann. Die Struktur auf dem vorherigen Beispiel habe ich nochmal abgeändert, da die Einstellungen nur für eine Abbildung gelten sollen.

Ein Frage hätte ich aber noch: was bedeutet das #1 bei xshift#1 oder bar shift=#1?

Unbenannt.PNG
\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full]{scrreprt}
\usepackage{pgfplots} % Säulendiagramm
\pgfplotsset{compat=newest} % =
\usepackage{fontspec}	% Schriftart
	\setmainfont{Arial}	% =
\usepackage[locale=DE,range-units = single]{siunitx}
	


\begin{document}
\begin{tikzpicture}%[font=\footnotesize\sffamily]
\pgfplotsset{/pgf/number format/.cd, fixed,  assume math mode}
\pgfkeys{/pgf/number format/use comma}
\pgfmathsetlengthmacro\x{15mm} 
                    
\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 }, } \definecolor{myorange}{HTML}{ED7D31} \definecolor{myyellow}{HTML}{FFC000} \definecolor{myblue}{HTML}{4472C4} \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 \begin{axis}[ ybar stacked, nodes near coords, xtick={data}, xticklabels={I,II}, ymin=0, enlarge x limits=1, legend entries={A,B,C}, xlabel=Platte, ylabel=Gewicht $\lbrack$\SI{}{\gram}$\rbrack$ ] \addplot [fill=myblue,bar width=\x] table [y=yBlau] {\data}; \addplot [fill=myorange, bar width=0.5*\x,show sum on top=-0.25*\x] table [y=yOrange] {\data}; \addplot [fill=myyellow, bar width=0.5*\x,show sum on top=0.25*\x] table [y=yGelb] {\data}; \end{axis} \end{tikzpicture} \end{document}

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

Re: Hilfestellung bei parallel gestapeltem Säulendiagramm mit pgfplots

Beitrag von cis »

Zoid hat geschrieben:
Mi 5. Aug 2020, 16:34

Ein Frage hätte ich aber noch: was bedeutet das #1 bei xshift=#1 oder bar shift=#1?

Das ist an sich die gleiche Syntax wie bei \newcommand\mycmd[1]{here comes #1...}.
Allerdings verlangt pgf/TikZ für nur ein Argument keine besondere Angabe; also kann man da einfach sowas wie xshift=#1 dazuschreiben.

PS:

Zoid hat geschrieben:
Mi 5. Aug 2020, 16:34

\pgfmathsetlengthmacro\x{15mm}

Am Rande: Es mag für Dich übersichtlicher sein, wenn Du schlicht \pgfmathsetlengthmacro\x (als globale Definition) verwendest, allerdings ist sowas immer etwas kritisch, da es sein kann, dass \x bereits irgendwie intern von Paketen verwendet wird und dann würde das überschrieben werden. Daher hatte ich auch eine möglichst abstrakte Benennung \pgfmathsetlengthmacro\BarWidth benutzt.


Antworten