Zwei Diagramme auf einer Linie: funktioniert nicht Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Gast

Zwei Diagramme auf einer Linie: funktioniert nicht

Beitrag 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}

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

Beitrag 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}

Gast

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

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

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

Antworten