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, 17:37

josephine's gravatar image

josephine
944223035
Akzeptiert-Rate: 0%

bearbeitet 21 Okt '13, 18:47

cgnieder's gravatar image

cgnieder
22.1k243463


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, 23:56

stefan's gravatar image

stefan ♦♦
18.1k143048
Akzeptiert-Rate: 48%

bearbeitet 22 Okt '13, 00:00

Danke für die Antwort. Funktioniert fantastisch.

(28 Okt '13, 10: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, 09:38

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×7

gestellte Frage: 21 Okt '13, 17:37

Frage wurde gesehen: 13,999 Mal

zuletzt geändert: 28 Okt '13, 10:05