Seite 1 von 2
Legende beim Kreisdiagramm oberhalb platzieren
Verfasst: Fr 1. Jul 2016, 22:57
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
Gruß
pauabaer
Verfasst: Fr 1. Jul 2016, 23:52
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 ...
Verfasst: Sa 2. Jul 2016, 00:15
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
einfügen. Nur habe ich noch nicht die passende Stelle in der tikz-Umgebung gefunden.
Gruß
pauabaer
Verfasst: Sa 2. Jul 2016, 09:40
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}
Verfasst: Sa 2. Jul 2016, 11:39
von pauabaer
Vielen Dank! Soweit kann ich erstmal arbeiten. Hab krampfhaft versucht ein legend columns = -1 einzubinden.
Danke.
Verfasst: Sa 2. Jul 2016, 11:57
von pauabaer
Wie kann ich die Legende oberhalb darstellen, wenn ich zwei dieser Kreisdiagramme nebeneinander habe? Das schaffe ich bisher noch nicht.
Verfasst: Sa 2. Jul 2016, 15:19
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.
Verfasst: Sa 2. Jul 2016, 17:12
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.
Verfasst: Sa 2. Jul 2016, 18:37
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.
Verfasst: Sa 2. Jul 2016, 19:00
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?