Hallo zusammen,

ich versuche ein Kreisdiagramm mit separierten Segmenten zu zeichnen, d.h. die einzelnen Segmente sollen einander nicht berühren. Ein einfaches Kreisdiagramm habe ich nach der Anleitung der Statistiker WG bereits erstellt (hier). Nur leider weiß ich nicht, wie ich die Segmente voneinander trennen kann. Im Grunde soll das Ganze so aussehen:

Ziel

Untenstehend mein MB für das Kreisdiagramm. Würde mich über Tipps sehr freuen.

\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}

% TikZ Beginn Adjustments -----------------------------------------------------------------------------------------------------------------------------
    \usepackage{tikz}
    \newenvironment{tikzschriftgroesse}{\begin{small}}{\end{small}}

\begin{document}
\begin{figure}  % hier kann problemslos zwischen figure und sidewaysfigure gewechselt werden
\centering
\begin{tikzschriftgroesse}
\begin{tikzpicture}
% Grid
%   \draw [step=0.5cm,very thin,gray] (0,0) grid(14.5,20);

% Radius und Winkel der Segmente. Summe=360
\newcommand{\radius}{2cm}
\newcommand{\wa}{72} % Winkel für erstes Segment
\newcommand{\wb}{57+\wa}
\newcommand{\wc}{47+\wb}
\newcommand{\wdd}{42+\wc}
\newcommand{\we}{33+\wdd}
\newcommand{\wf}{29+\we}
\newcommand{\wg}{28+\wf}
\newcommand{\wh}{25+\wg}
\newcommand{\wi}{15+\wh}
\newcommand{\wj}{12+\wi}

% Definiere Farben der Segmente
\definecolor{farbe01}{rgb}{0,0,0}
\definecolor{farbe02}{rgb}{0.1,0.1,0.1}
\definecolor{farbe03}{rgb}{0.2,0.2,0.2}
\definecolor{farbe04}{rgb}{0.3,0.3,0.3}
\definecolor{farbe05}{rgb}{0.4,0.4,0.4}
\definecolor{farbe06}{rgb}{0.5,0.5,0.5}
\definecolor{farbe07}{rgb}{0.6,0.6,0.6}
\definecolor{farbe08}{rgb}{0.7,0.7,0.7}
\definecolor{farbe09}{rgb}{0.8,0.8,0.8}
\definecolor{farbe10}{rgb}{0.9,0.9,0.9}

% Kreisdiagramm links
\draw[fill=farbe01] (0,0) -- (0:\radius) arc (0:\wa:\radius);
\draw[fill=farbe02] (0,0) -- (\wa:\radius) arc (\wa:\wb:\radius);
\draw[fill=farbe03] (0,0) -- (\wb:\radius) arc (\wb:\wc:\radius);
\draw[fill=farbe04] (0,0) -- (\wc:\radius) arc (\wc:\wdd:\radius);
\draw[fill=farbe05] (0,0) -- (\wdd:\radius) arc (\wdd:\we:\radius);
\draw[fill=farbe06] (0,0) -- (\we:\radius) arc (\we:\wf:\radius);
\draw[fill=farbe07] (0,0) -- (\wf:\radius) arc (\wf:\wg:\radius);
\draw[fill=farbe08] (0,0) -- (\wg:\radius) arc (\wg:\wh:\radius);
\draw[fill=farbe09] (0,0) -- (\wh:\radius) arc (\wh:\wi:\radius);
\draw[fill=farbe10] (0,0) -- (\wi:\radius) arc (\wi:\wj:\radius);

% Kreisdiagramm rechts
\draw[fill=farbe01] (10,0) -- ++(0:\radius) arc (0:\wa:\radius);
\draw[fill=farbe02] (10,0) -- ++(\wa:\radius) arc (\wa:\wb:\radius);
\draw[fill=farbe03] (10,0) -- ++(\wb:\radius) arc (\wb:\wc:\radius);
\draw[fill=farbe04] (10,0) -- ++(\wc:\radius) arc (\wc:\wdd:\radius);
\draw[fill=farbe05] (10,0) -- ++(\wdd:\radius) arc (\wdd:\we:\radius);
\draw[fill=farbe06] (10,0) -- ++(\we:\radius) arc (\we:\wf:\radius);
\draw[fill=farbe07] (10,0) -- ++(\wf:\radius) arc (\wf:\wg:\radius);
\draw[fill=farbe08] (10,0) -- ++(\wg:\radius) arc (\wg:\wh:\radius);
\draw[fill=farbe09] (10,0) -- ++(\wh:\radius) arc (\wh:\wi:\radius);
\draw[fill=farbe10] (10,0) -- ++(\wi:\radius) arc (\wi:\wj:\radius);

\end{tikzpicture}
\end{tikzschriftgroesse}
\end{figure}

\end{document}

gefragt 21 Okt '13, 11:37

josephine's gravatar image

josephine
94432434
Akzeptiert: 76%

bearbeitet 21 Okt '13, 12:47

Clemens's gravatar image

Clemens
19.0k112960


So würde ich vorgehen:

  • wiederholte Sachen in einer \foreach-Schleife zusammenfassen
  • Anfangswinkel und Endwinkel anpassen, so dass Lücken entstehen
  • mit einer Kreisscheibe in der Mitte überdecken

Kurz und knapp, mit wilden Farben willkürlich gewählt:

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\foreach \anfang/\ende/\farbe in { 4/70/red!90, 74/100/yellow!90!black, 104/166/green!80,
    170/190/blue!40!white, 194/230/blue!90!black, 234/310/red!40!white, 314/360/orange}
  \draw[fill=\farbe,draw=none] (0,0) -- (\anfang:2cm) arc (\anfang:\ende:2cm);
\draw[fill=white,draw=none] (0,0) circle (1.3cm);
\end{tikzpicture}

\end{document}

Kreisdiagramm

Permanenter link

beantwortet 21 Okt '13, 17:56

stefan's gravatar image

stefan ♦♦
5.8k12134

bearbeitet 21 Okt '13, 18:00

Danke für die Antwort. Funktioniert fantastisch.

(28 Okt '13, 05:05) josephine

Alternativ könnte man an auch weiße Linien zur Trennung der Kreissegmente einzeichnen und Farbserien verwenden:

\documentclass[margin=5pt]{standalone}

\usepackage{tikz}

\definecolorseries{blaugelb}{rgb}{last}{blue}{yellow}
\definecolorseries{schwarz}{rgb}{last}{black}[rgb]{0.9,0.9,0.9}

\def\Kreisdiagramm(#1,#2)#3#4#5#6#7#8{%
  \resetcolorseries[#4]{#5}
  \edef\startwinkel{\csname#3\endcsname[0]}
  \foreach[remember=\endwinkel as \startwinkel,
    evaluate=\i as \endwinkel using {\startwinkel+\csname#3\endcsname[\i]}]
    \i in {1,...,#4}{%
      \fill[{#5!![\i-1]}] (#1,#2) --++(\startwinkel:#6) arc (\startwinkel:\endwinkel:#6);
      \draw[white, line width=#8](#1,#2)--++(\startwinkel:#6+0.1pt);
  }
  \draw[white,line width=#8](#1,#2)--++(\startwinkel:#6);
  \fill[white](#1,#2)circle [radius=#7];%
}

\begin{document}
\begin{tikzpicture}

\newcommand\Winkel{{0,72,57,47,42,33,29,28,25,15,12}}% erster Wert ist Startwinkel

% Kreisdiagramm mit
  % Mittelpunkt (0,0), den Winkeln aus \Winkel, 10 Segmenten,Farbserie: blaugelb
  % Außenradius 2cm, Innenradius 2cm und 0.75mm breiten Trennlinien zwischen den Kreissegmenten
\Kreisdiagramm(0,0){Winkel}{10}{blaugelb}{2cm}{1cm}{0.75mm}

\Kreisdiagramm(6,0){Winkel}{10}{schwarz}{2cm}{1cm}{0.75mm}

\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 22 Okt '13, 03:38

esdd's gravatar image

esdd
14.2k53251

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×6

Frage gestellt: 21 Okt '13, 11:37

Frage wurde angeschaut: 5,074 Mal

Zuletzt aktualisiert: 28 Okt '13, 05:05