Legende beim Kreisdiagramm oberhalb platzieren

Tabellen und Grafiken erstellen und anordnen


pauabaer
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 19. Sep 2015, 00:17

Legende beim Kreisdiagramm oberhalb platzieren

Beitrag von pauabaer »

Hallo Leute,

ich habe mich einer Vorlage aus dem world wide web für meine Kreisdiagramme bedient:
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\def\angle{0}
\def\radius{3}
\newcommand\square[1]{%
	\tikz\filldraw[color=#1] (0,0) rectangle (1.5ex,1.5ex);%
}

\usepackage{colortbl}	
\definecolor{Orange}{RGB}{247 150 70} 
\definecolor{Grun}{RGB}{155 187 89}
\definecolor{Lila}{RGB}{115 38 218}
\usepackage{wrapfig}

\begin{document}
	
%\begin{wrapfigure}[23]{o}[0cm]{8cm}
%	\scalebox{.6}{
\newcount\ind \ind=-1
		\begin{tikzpicture}
		\foreach \percent/\name/\color in {
			66.32/Haupttätigkeiten/Orange,
			21.39/Nebentätigkeiten/Grun,
			12.30/Unterbrechungen/Lila,
		} {
		\ifx\percent\empty\else                 % If \percent is empty, do nothing
		\global\advance\ind by 1              % Advance list index
		% Draw angle and set labels
		\draw[fill={\color!80},draw={\color}] (0,0) -- (\angle:\radius) arc (\angle:\angle+\percent*3.6:\radius) -- cycle;
		\node[anchor=north] at (\radius+2,1.5-.5*\ind) {\square{\color} \name};
		\node[pin=\angle+0.5*\percent*3.6:\percent\%] at (\angle+0.5*\percent*3.6:\radius) {};
		\pgfmathparse{\angle+\percent*3.6}    % Advance angle
		\xdef\angle{\pgfmathresult}           %   and store in \angle
		\fi
	};
	\end{tikzpicture}

	
\end{document}
Wie bekomme ich es jetzt hin, dass die Legende oberhalb des Diagramms angezeigt wird?
\node[anchor=north] at (\radius+2,1.5-.5*\ind) 
Es muss doch bestimmt hier irgendwie anzupassen sein oder?

Freue mich über Hilfe eurerseits. Und bitte nicht steinigen :D

Gruß
pauabaer

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 809
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag von Beinschuss »

Dass Du richtig vermutest, testest Du, indem Du mit den Werten spielst, z.B.:
 \node[anchor=north] at (\radius-2,5-.5*\ind)
Aber es gibt mit Sicherheit noch bessere Lösungen ...

pauabaer
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 19. Sep 2015, 00:17

Beitrag von pauabaer »

An den "Radius"-Werten habe ich noch gar nicht herumgespielt.
Ich habe aber auch noch einen wichtigen Zusatz vergessen:

Möchte die Legendeneinträge nebeneinander zu stehen haben. Also
legend columns = -1
einfügen. Nur habe ich noch nicht die passende Stelle in der tikz-Umgebung gefunden.

Gruß
pauabaer

Noch so einer

Beitrag von Noch so einer »

Da Du die Legende ja selbst erstellst und platzierst, kannst Du die einzelnen Elemente natürlich an beliebiger Stelle unterbringen:
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\def\angle{0}
\def\radius{3}
\newcommand\square[1]{%
   \tikz\filldraw[color=#1] (0,0) rectangle (1.5ex,1.5ex);%
}

\usepackage{colortbl}   
\definecolor{Orange}{RGB}{247 150 70} 
\definecolor{Grun}{RGB}{155 187 89}
\definecolor{Lila}{RGB}{115 38 218}
\usepackage{wrapfig}

\begin{document}
   
%\begin{wrapfigure}[23]{o}[0cm]{8cm}
%   \scalebox{.6}{
\newcount\ind \ind=-1
      \begin{tikzpicture}
      \foreach \percent/\name/\color in {
         66.32/Haupttätigkeiten/Orange,
         21.39/Nebentätigkeiten/Grun,
         12.30/Unterbrechungen/Lila,
      } {
      \ifx\percent\empty\else                 % If \percent is empty, do nothing
      \global\advance\ind by 1              % Advance list index
      % Draw angle and set labels
      \draw[fill={\color!80},draw={\color}] (0,0) -- (\angle:\radius) arc (\angle:\angle+\percent*3.6:\radius) -- cycle;
      \node[anchor=north] at (3.5*\ind-3.5,\radius+1.5) {\square{\color} \name};% Nur ein Beispiel
      \node[pin=\angle+0.5*\percent*3.6:\percent\%] at (\angle+0.5*\percent*3.6:\radius) {};
      \pgfmathparse{\angle+\percent*3.6}    % Advance angle
      \xdef\angle{\pgfmathresult}           %   and store in \angle
      \fi
   };
   \end{tikzpicture}

   
\end{document}

pauabaer
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 19. Sep 2015, 00:17

Beitrag von pauabaer »

Vielen Dank! Soweit kann ich erstmal arbeiten. Hab krampfhaft versucht ein legend columns = -1 einzubinden.

Danke.

pauabaer
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 19. Sep 2015, 00:17

Beitrag von pauabaer »

Wie kann ich die Legende oberhalb darstellen, wenn ich zwei dieser Kreisdiagramme nebeneinander habe? Das schaffe ich bisher noch nicht.

Noch so einer

Beitrag von Noch so einer »

Was ist dabei Dein Problem (Stichwort: Minimalbeispiel). Du musst ja eigentlich nur die x-Koordinate der Legeneinträge des zweiten Diagramms um die x-Position des zweiten Diagramms vergrößern.

pauabaer
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 19. Sep 2015, 00:17

Beitrag von pauabaer »

Klar..Minimalbeispiel ist notwendig :)
\documentclass[
paper=A4,					
pagesize=auto,			
fontsize=11pt,				
]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\def\angle{0}
\def\radius{3}
\newcommand\square[1]{%
	\tikz\filldraw[color=#1] (0,0) rectangle (1.5ex,1.5ex);%
}
\usetikzlibrary{snakes,shapes.geometric,arrows,plotmarks,positioning,fit}
\usepackage{pgfplots}
\usepackage{colortbl}	
\definecolor{Grun}{RGB}{155 187 89}
\definecolor{Rot}{RGB}{192 80 77}
\definecolor{Blau}{RGB}{79 129 189}
\definecolor{Lila}{RGB}{128 100 162}
\usepackage{wrapfig}
\usepackage{subcaption}		

				


\begin{document}
	
\begin{figure}[!h]
	\centering
	\begin{subfigure}[b]{0.48\textwidth}
		\centering
			\newcount\ind \ind=7
			\begin{tikzpicture}
			\foreach \percent/\name/\color in {
				58.91/Haupttätigkeiten/Rot,
				22.99/Nebentätigkeiten/Grun,
				7.50/störungsbedingte Unterbrechungen/Blau,
				10.60/persönliche Unterbrechungen/Lila,
			} {
			\ifx\percent\empty\else                 % If \percent is empty, do nothing
			\global\advance\ind by 1              % Advance list index
			% Draw angle and set labels
			\draw[fill={\color!80},draw={\color}] (0,0) -- (\angle:\radius) arc (\angle:\angle+\percent*3.6:\radius) -- cycle;
			%\node[anchor=base west] at (\radius+2,1.5-.5*\ind) {\square{\color} \name};
			\node[pin=\angle+0.5*\percent*3.6:\percent\%] at (\angle+0.5*\percent*3.6:\radius) {};
			\pgfmathparse{\angle+\percent*3.6}    % Advance angle
			\xdef\angle{\pgfmathresult}           %   and store in \angle
			\fi
		};
		\end{tikzpicture}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.48\textwidth}
	\centering
		\newcount\ind \ind=7
		\begin{tikzpicture}
		\foreach \percent/\name/\color in {
				58.91/Haupttätigkeiten/Rot,
				22.99/Nebentätigkeiten/Grun,
				7.50/störungsbedingte Unterbrechungen/Blau,
				10.60/persönliche Unterbrechungen/Lila,
		} {
		\ifx\percent\empty\else                 % If \percent is empty, do nothing
		\global\advance\ind by 1              % Advance list index
		% Draw angle and set labels
		\draw[fill={\color!80},draw={\color}] (0,0) -- (\angle:\radius) arc (\angle:\angle+\percent*3.6:\radius) -- cycle;
		\node[anchor=base west,node font=\large] at (\radius+1,1.5-.5*\ind) {\square{\color} \name};
		\node[pin=\angle+0.5*\percent*3.6:\percent\%] at (\angle+0.5*\percent*3.6:\radius) {};
		\pgfmathparse{\angle+\percent*3.6}    % Advance angle
		\xdef\angle{\pgfmathresult}           %   and store in \angle
		\fi
	};
	\end{tikzpicture}
\end{subfigure}

\end{figure}

	
\end{document}
Du musst ja eigentlich nur die x-Koordinate der Legeneinträge des zweiten Diagramms um die x-Position des zweiten Diagramms vergrößern.
Genau hiermit komme ich nicht klar.

Noch so einer

Beitrag von Noch so einer »

Ich verstehe leider nicht, was genau Du jetzt haben willst. Soll eine gemeinsame Legende über beide Abbildungen? Dann musst Du die Legende als eigene Grafik setzen oder Du musst die beiden Grafiken in eine gemeinsame (ohne die subfigure-Umgebungen) überführen.

Bisher hatte ich Dich so verstanden, dass jedes Diagramm eine eigene Legende haben soll.

pauabaer
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Sa 19. Sep 2015, 00:17

Beitrag von pauabaer »

Entschuldige bitte das ich mich unklar ausgedrückt habe. Ich möchte eine Legende über beide Abbildungen. Da ich aber die subfigure-Umgebung benötige, brauche ich dann wohl eine eigene Grafik.

Wie muss diese aussehen? Woher bekomme ich den Bezug der Farben?

Antworten