Seite 1 von 1

Zwei Diagramme auf einer Linie: funktioniert nicht

Verfasst: Mi 8. Nov 2017, 18:36
von Gast
Hallo

Ich würde diese Diagramme gerne nebeneinander nehmen (auf einer Linie).
Aber irgendwie klappt es nicht.

Was muss ich ändern?
\documentclass[12pt,a4paper]{report} 
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest} 
\usetikzlibrary{arrows.meta} 
\definecolor{myorange}{rgb}{1,0.3,0} 
\usepackage{caption} 
\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenc} 
\begin{document} 
\noindent 
\begin{flushleft}
\pgfplotsset{
  width=7.5cm,%
  height=4cm,% 
  scale only axis, 
  axis lines=left, 
  x axis line style={|[left]-|[right]}, 
  y axis line style={|[right]-|[left]}, 
  ylabel=Anzahl, 
  ymin=0,ymax=6, 
  ytick={2,4,6,8,10}, 
  ymajorgrids, 
  xlabel=Antworten, 
  xtick={0,...,3},
  xticklabels={A,B,C}, 
  xticklabel style={anchor=east,rotate=45,align=center}, 
  ybar=0pt, 
  /pgf/bar width=1.8cm,% 
  enlarge x limits={abs=1.4cm},% 
  nodes near coords
}
\begin{minipage}[t]{0.55\textwidth}
\begin{tikzpicture} 
\pgfplotstableread{ 
Antworten I 
{A}      5
{B}    2
{C}  3
}{\data}; 

\begin{axis}
\addplot[fill=myorange]table[x expr=\coordindex,y=I]{\data}; 
\end{axis} 
\end{tikzpicture} 
\captionof{figure}{Text}
\end{minipage}
\end{flushleft}
\qquad
\begin{flushleft}
\pgfplotsset{
  width=3.5cm,%  
  height=4cm,%
  scale only axis, 
  axis lines=left, 
  x axis line style={|[left]-|[right]}, 
  y axis line style={|[right]-|[left]}, 
  ylabel=Anzahl, 
  ymin=0,ymax=8, 
  ytick={2,4,6,8}, 
  ymajorgrids, 
  xlabel=Antworten, 
  xtick={0,...,2},
  xticklabels={Ja,Nein}, 
  xticklabel style={anchor=east,rotate=45,align=center}, 
  ybar=0pt, 
  /pgf/bar width=1cm,% 
  enlarge x limits={abs=1cm},%
  nodes near coords
}
\begin{minipage}[t]{0.3\textwidth}
\begin{tikzpicture} 

\pgfplotstableread{ 
Antworten I 
{Ja}      7
{Nein}    3
}{\data}; 

\begin{axis}
\addplot[fill=myorange]table[x expr=\coordindex,y=I]{\data}; 
\end{axis} 
\end{tikzpicture} 
\captionof{figure}{Text}
\end{minipage}
\end{flushleft}

\end{document}

Verfasst: Mi 8. Nov 2017, 19:19
von Bartman
Suchst Du so etwas?
\documentclass[12pt,a4paper]{report} 
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest} 
\usetikzlibrary{arrows.meta} 
\definecolor{myorange}{rgb}{1,0.3,0} 
\usepackage{caption} 
\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenc} 
\usepackage{showframe}

\begin{document} 
%\noindent 
\begin{flushleft}
\pgfplotsset{
	height=4cm,
	scale only axis, 
	axis lines=left, 
	x axis line style={|[left]-|[right]}, 
	y axis line style={|[right]-|[left]}, 
	ylabel=Anzahl, 
	ymin=0,
	ymajorgrids, 
	xlabel=Antworten, 
	xticklabel style={
		anchor=east,
		rotate=45,
		align=center
	}, 
	ybar=0pt,
	nodes near coords
}
\begin{minipage}[t]{0.57\textwidth}
\begin{tikzpicture} 
\pgfplotstableread{ 
Antworten I 
{A}      5
{B}    2
{C}  3
}{\data}; 

\begin{axis}[
	width=7.5cm,
	ymax=6, 
	ytick={2,4,...,10},
	xtick={0,...,3},
	xticklabels={A,B,C},
	bar width=1.8cm,
	enlarge x limits={abs=1.4cm}
]
\addplot[fill=myorange]table[x expr=\coordindex,y=I]{\data}; 
\end{axis} 
\end{tikzpicture} 
\captionof{figure}{Text}
\end{minipage}
%\end{flushleft}
\qquad
%\begin{flushleft}
\begin{minipage}[t]{0.3\textwidth}
\begin{tikzpicture} 

\pgfplotstableread{ 
Antworten I 
{Ja}      7
{Nein}    3
}{\data}; 

\begin{axis}[
	width=3.5cm,
	ymax=8,
	ytick={2,4,6,8}, 
	xtick={0,...,2},
	xticklabels={Ja,Nein}, 
	bar width=1cm,
	enlarge x limits={abs=1cm}
]
\addplot[fill=myorange]table[x expr=\coordindex,y=I]{\data}; 
\end{axis} 
\end{tikzpicture} 
\captionof{figure}{Text}
\end{minipage}
\end{flushleft}
\end{document}

Verfasst: Mi 8. Nov 2017, 20:28
von Gast
Ja, genau.
Wie kann man die beiden Diagramme nun auf die gleiche Höhe bekommen?
Da die x-Achsen-Beschriftung nicht gleich lang ist, verschiebt es das eine nach oben...

So, dass das Wort Antworten dann einen grösseren Abstand hat zu A,B,C und Ja, Nein. Denn so können auch die Diagramme auf gleicher Höhe stehen..

Verfasst: Do 9. Nov 2017, 17:34
von Bartman
\documentclass[12pt,a4paper]{report} 
\usepackage{pgfplotstable}
\usepackage{caption} 
\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenc} 
\usepackage{showframe}

\pgfplotsset{compat=newest} 

\definecolor{myorange}{rgb}{1,0.3,0} 

\begin{document} 
\begin{flushleft}
\pgfplotsset{
	height=4cm,
	scale only axis, 
	axis lines=left, 
	x axis line style={|[left]-|[right]}, 
	y axis line style={|[right]-|[left]}, 
	ylabel=Anzahl, 
	ymin=0,
	ymajorgrids, 
	xlabel=Antworten, 
	xticklabel style={
		anchor=east,
		rotate=45,
		align=center
	},
	ybar=0pt,
	/pgf/bar width=1cm,
	enlarge x limits={abs=1cm},
	nodes near coords
}
\begin{minipage}[t]{0.45\textwidth}
\centering
\begin{tikzpicture}[baseline=(current axis.south)]% <- eingefügt 
\pgfplotstableread{ 
Antworten I 
{A}       5
{B}       2
{C}       3
}{\data}; 

\begin{axis}[
	width=5.5cm,
	ymax=6, 
	ytick={2,4,...,10},
	xtick={0,...,3},
	xticklabels={A,B,C},
	xlabel style={yshift=-3.7mm}% <- eingefügt
]
\addplot[fill=myorange]table[x expr=\coordindex,y=I]{\data}; 
\end{axis} 
\end{tikzpicture} 
\end{minipage}
\qquad
\begin{minipage}[t]{0.45\textwidth}
\centering
\begin{tikzpicture}[baseline=(current axis.south)]% <- eingefügt

\pgfplotstableread{ 
Antworten I 
{Ja}      7
{Nein}    3
}{\data}; 

\begin{axis}[
	width=4cm,
	ymax=8,
	ytick={2,4,6,8}, 
	xtick={0,...,2},
	xticklabels={Ja,Nein}
]
\addplot[fill=myorange]table[x expr=\coordindex,y=I]{\data}; 
\end{axis} 
\end{tikzpicture} 
\end{minipage}\\\bigskip
\begin{minipage}[t]{0.45\textwidth}
\captionof{figure}{Text}% <- verschoben
\end{minipage}
\qquad
\begin{minipage}[t]{0.45\textwidth}
\captionof{figure}{Text}% <- verschoben
\end{minipage}
\end{flushleft}
\end{document}
Meine Zuweisung an yshift gefällt mir nicht besonders, aber bis einem anderen Leser eine bessere Lösung dazu einfällt, dürfte das Ergebnis Deinem Wunsch recht nahe kommen.