Tikz ybar stacked will nicht so wie ich.

Tabellen und Grafiken erstellen und anordnen


schleyse
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Fr 18. Mär 2016, 15:57

Tikz ybar stacked will nicht so wie ich.

Beitrag von schleyse »

Hallöchen,

ich bastel gerade an ein paar Diagrammen mit Tikz, leider kriege ich das was ich gerne hätte nicht hin. Und zwar:

Ich wollte erreichen, dass die Balken an der X-Achse beginnen und nicht mittendrin. Außerdem wollte ich, dass auch, wenn die Balken dort beginnen, sie trotzdem noch an der Position an der sie sich gerade befinden bleiben.

Ich schlage mich damit jetzt schon seit Stunden damit rum - eine Hilfestellung wäre phänomenal!

Edit: Habe vergessen das Beispiel zu posten (großes Kino)

https://www.overleaf.com/read/jsfcrprrtwxp


Beste Grüße,

Sebastian
Zuletzt geändert von schleyse am Fr 18. Mär 2016, 17:32, insgesamt 1-mal geändert.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Tikz ybar stacked will nicht so wie ich.

Beitrag von esdd »

schleyse hat geschrieben: Ich schlage mich damit jetzt schon seit Stunden damit rum - eine Hilfestellung wäre phänomenal!
Ohne Minimalbeispiel dürften die Chancen dafür eher sehr schlecht stehen, denn ein beliebiges Beispiel, bei dem die Balken an der x-Achse beginnen, dürfte Dir kaum weiter helfen.

Zaun-

Beitrag von Zaun- »

Ups, vergessen anzuhängen. Von Overleaf hierher kopiert:
\documentclass[border=10pt]{standalone}
%%%<
\usepackage{verbatim}
%%%>
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.8}
\begin{comment}
:Title: Stacked bar plot
:Tags: 2D;Stacked plots;Manual
:Author: Christian Feuersänger
:Slug: stacked-bar-plot

Stacking plots means to add either x or y coordinates of
successive \addplot commands on top of each other.

The code is from the PGFPlots 1.10 manual: "4.5.8 Stacked Plots",
"Stacked Bar Plots and Nodes Near Coords".
\end{comment}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    width=14.5cm,
    height=7cm,
    ymin=0,
    ybar stacked,
    bar width=140pt,
    enlargelimits=0.5,
    legend style={at={(0.5,-0.20)},
    anchor=north,legend columns=2},
    ylabel={kg/t-Al},
    symbolic x coords={Primärerzeugung, Recycling},
    xtick=data]

\addplot+[ybar] plot coordinates {(Primärerzeugung,3185) (Recycling,0)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,296)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,330) (Recycling,0)};

\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,27)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,135) (Recycling,0)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,73)};

\legend{\strut Bayerprozess (87{,}3~\%), \strut Salzrecycling (74{,}9~\%), \strut Elektrolyse (9{,}0~\%), \strut Schrottvorbereitung (6{,}8~\%), \strut Sonstiges (3{,}7~\%),  Schmelzen{,} Energiebereitstellung (18{,}3~\%)}
\end{axis}
\end{tikzpicture}
\end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ich habe an Deinem Beispiel lediglich ein paar Änderungen vergenommen, welche meiner Meinung nach sinnvoll wären. Es ist keine Lösung Deines Problems.
\documentclass[border=10pt]{standalone}

\usepackage{selinput}
\SelectInputMappings{
	adieresis={ä},
   germandbls={ß}
}
\usepackage{siunitx}
\usepackage{pgfplots}

\pgfplotsset{
	compat=1.12, % wegen Overleaf, MiKTeX und TeX Live dürften 1.13 unterstützen
   /pgf/number format/.cd,
		1000 sep=\thinspace, % Änderung des Tausendertrennzeichens
		min exponent for 1000 sep=4 % nicht bei vierstelligen Zahlen
}

\sisetup{
	locale = DE, % für die Dezimaltrennzeichen in der Legende
   per-mode = fraction % für den Bruch in der Beschriftung der Y-Achse
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    width=14.5cm,
    height=7cm,
    ymin=0,
    ybar stacked,
    bar width=140pt,
    enlargelimits=0.5,
    legend style={
    	at={(0.5,-0.20)},
	    anchor=north,
       legend columns=2,
   	 cells={anchor=west} % Legendentext linksbündig ausrichten
	 },
    ylabel={$\si{\kg\per\tonne}-\mathrm{Al}$}, 
    symbolic x coords={Primärerzeugung, Recycling},
    xtick=data
]

\addplot+[ybar] plot coordinates {(Primärerzeugung,3185) (Recycling,0)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,296)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,330) (Recycling,0)};

\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,27)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,135) (Recycling,0)};
\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,73)};

\legend{
	Bayerprozess (\SI{87.3}{\percent}),
	Salzrecycling (\SI{74.9}{\percent}),
	Elektrolyse (\SI{9}{\percent}),
	Schrottvorbereitung (\SI{6.8}{\percent}),
	Sonstiges (\SI{3.7}{\percent}),
	Schmelzen{,} Energiebereitstellung (\SI{18.3}{\percent})
}
\end{axis}
\end{tikzpicture}
\end{document}
Sollen die Balken so breit sein?

schleyse
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Fr 18. Mär 2016, 15:57

Danke erstmal

Beitrag von schleyse »

Hallo Bartman,

danke schonmal für die Veränderungen. Die Balkenbreite wäre schon gut wenn sie so um den Dreh wie in meinem Beispiel ist.

Wenn jetzt noch jemand einen kleinen Tipp bezüglich des ursprünglichen Problems hätte wäre ich echt happy :)

Beste Grüße,

Sebastian

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Ändere enlargelimits=.5 zu enlarge x limits=0.5

Bild
\documentclass[border=10pt]{standalone} 

\usepackage{selinput} 
\SelectInputMappings{ 
    adieresis={ä}, 
    germandbls={ß} 
} 
\usepackage{siunitx} 
\usepackage{pgfplots} 

\pgfplotsset{ 
    compat=1.12, % wegen Overleaf, MiKTeX und TeX Live dürften 1.13 unterstützen 
    /pgf/number format/.cd, 
       1000 sep=\thinspace, % Änderung des Tausendertrennzeichens 
       min exponent for 1000 sep=4 % nicht bei vierstelligen Zahlen 
} 

\sisetup{ 
    locale = DE, % für die Dezimaltrennzeichen in der Legende 
    per-mode = fraction % für den Bruch in der Beschriftung der Y-Achse 
} 

\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ 
     width=14.5cm, 
     height=7cm, 
     ymin=0, 
     ybar stacked, 
     bar width=140pt, 
     enlarge x limits=0.5 % <- nur x limits!
     legend style={ 
        at={(0.5,-0.20)}, 
        anchor=north, 
        legend columns=2, 
        cells={anchor=west} % Legendentext linksbündig ausrichten 
     }, 
     ylabel={$\si{\kg\per\tonne}-\mathrm{Al}$}, 
     symbolic x coords={Primärerzeugung, Recycling}, 
     xtick=data 
] 

\addplot+[ybar] plot coordinates {(Primärerzeugung,3185) (Recycling,0)}; 
\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,296)}; 
\addplot+[ybar] plot coordinates {(Primärerzeugung,330) (Recycling,0)}; 

\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,27)}; 
\addplot+[ybar] plot coordinates {(Primärerzeugung,135) (Recycling,0)}; 
\addplot+[ybar] plot coordinates {(Primärerzeugung,0)(Recycling,73)}; 

\legend{ 
    Bayerprozess (\SI{87.3}{\percent}), 
    Salzrecycling (\SI{74.9}{\percent}), 
    Elektrolyse (\SI{9}{\percent}), 
    Schrottvorbereitung (\SI{6.8}{\percent}), 
    Sonstiges (\SI{3.7}{\percent}), 
    Schmelzen{,} Energiebereitstellung (\SI{18.3}{\percent}) 
} 
\end{axis} 
\end{tikzpicture} 
\end{document}
Gruß
Elke
Dateianhänge
gl_enlargexlimits.png
gl_enlargexlimits.png (20.33 KiB) 2168 mal betrachtet

schleyse
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Fr 18. Mär 2016, 15:57

Super.

Beitrag von schleyse »

Vielen vielen Dank!

Antworten