Ich habe quasi keine Erfahrung mit TikZ und versuche mich gerade an einem Kreisdiagramm, um Wahlergebnisse darzustellen. Ich habe mich an Farbige Abschnitte eines Kreisdiagramms mit TikZ orientiert. Mir ist klar, dass meine Frage in eine andere Richtung abzielt. Dennoch konnte ich auf Anhieb keine bessere Vorlage finden. Wie kann ich nun feste Farbwerte den einzelnen Spalten zuordnen? Die Beschriftung würde ich gerne wie in diesem Beispiel vornehmen, d.h. die Farbwerte seitlich mit der Benennung der Partei auflisten.

Open in Online-Editor
\documentclass[tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}    
\begin{document}
\definecolor{color}{RGB}{0,66,144}
\definecolor{framsokn}{RGB}{125,91,49}
\definecolor{sjalfstaedi}{RGB}{0,0,181}
\definecolor{vinstrigraen}{RGB}{72,142,65}
  \definecolor{samfylkingin}{RGB}{198,18,24}
\definecolor{borgarahreyfingin}{RGB}{242,120,31}
\definecolor{bjoertframtidid}{RGB}{167,29,47}
\definecolor{lydraedishreyfingin}{RGB}{255,51,0}
\def\angle{0}
\def\radius{3}
\def\cyclelist{{"orange","blue","red","green"}}
\newcount\cyclecount \cyclecount=-1
\newcount\ind \ind=-1
\begin{tikzpicture}
     \foreach \percent/\name/\color in {
      14.8/Framsóknarflokkur/framsokn,
      23.7/Sjálfstæðisflokkur/sjalfstaedi,
       7.2/Borgarahreyfingin/bjoertframtidid,
     0.6/Lýðræðishreyfingin/lydraedishreyfingin,
      29.8/Samfylkingin/samfylkingin,
      21.7/Vinstrihreyfingin--grænt framboð/vinstrigraen%
 } {
      \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!100},draw={\color}] (0,0) -- (\angle:\radius) arc (\angle:\angle+\percent*3.6:\radius) -- cycle;
        \node at (\angle+0.5*\percent*3.6:0.7*\radius) {\percent\%};
        \node[pin=\angle+0.5*\percent*3.6:\name] 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}

gefragt 10 Jan, 09:09

Tischa's gravatar image

Tischa
92531953
Akzeptiert: 71%

bearbeitet 10 Jan, 09:49

Henri's gravatar image

Henri
10.0k31730

Mist, sorry, bin am ausbessern. Leider weiß ich nicht genau, wie man die Kuchenstücke zu 100% zusammenfügt. Muss man das selbst berechnen oder lässt sich das mit Werten, hier die Prozentwerte der Wahlergebnisse, automatisiert darstellen?

(10 Jan, 09:22) Tischa

Das kommt davon, wenn man immer nur c+p macht und dann ungenau arbeitet. Asche auf mein Haupt.

(10 Jan, 09:47) Tischa

Hatten wir das Thema Erstellen eines lauffähigen Beispiels nicht erst gestern besprochen? So unerheblich wie der Inhalt eines Bildes ist übrigens auch der Name der Partei. Mach doch Bienenpartei, Erbsenpartei, Schuhpartei und Kuchengabelpartei draus. Zumindest für mich ist das leichter zu lesen/verstehen als Sjálfstæðisflokkur (falls das ein Wort ist und da nicht gerade die Katze über die Tastatur lief).

(10 Jan, 09:50) Johannes

@Johannes. Jau, Du hast beide Male recht. Wird zukünftig beachtet. Bei gegebenem Interesse. https://de.wikipedia.org/wiki/Unabh%C3%A4ngigkeitspartei_%28Island%29

(10 Jan, 10:29) Tischa

Feste Farben sind den einzelnen Einträgen ja bereits zugeordnet. Ich würde jedoch empfehlen bei der Auswahl der Benennung nicht auf die Tastatur zu hauen, sondern aussagekräftige Namen zu wählen, wie z.B. dark blue.

Da tikz bereits das Paket xcolor lädt, führt ein weiteres Laden mit anderen Optionen zu Option clash. Für die lustigen Sonderzeichen muss \usepackage[utf8]{inputenc} verwendet werden. Damit diese dann auch im PDF dargestellt werden können braucht man außerdem \usepackage[T1]{fontenc}.

Mit

Open in Online-Editor
\node[anchor=base west] at (\radius+2,1.5-.5*\ind) {\square{\color} \name};

wird die Legende platziert. Um die vertikale Position zu verändern ersetzt man den Wert 1.5 mit etwas anderem. Um den Zeilenabstand anzupassen verändert man den Faktor .5 vor \ind.

Open in Online-Editor
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\definecolor{deep brown}{RGB}{125,91,49}
\definecolor{dark blue}{RGB}{0,0,181}
\definecolor{dark green}{RGB}{72,142,65}
\definecolor{crimson red}{RGB}{198,18,24}
\definecolor{light red}{RGB}{255,51,0}
\def\angle{0}
\def\radius{3}
\newcommand\square[1]{%
  \tikz\filldraw[color=#1] (0,0) rectangle (1.5ex,1.5ex);%
}
\newcount\ind \ind=-1
\begin{document}
\begin{tikzpicture}
  \foreach \percent/\name/\color in {
    14.8/Framsóknarflokkur/deep brown,
    23.7/Sjálfstæðisflokkur/dark blue,
    7.2/Borgarahreyfingin/blue,
    0.6/Lýðræðishreyfingin/light red,
    29.8/Samfylkingin/crimson red,
    21.7/Vinstrihreyfingin--grænt framboð/dark green,
    2.2/Sonstige/gray%
  } {
    \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!100},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{document}

alt text

Permanenter link

beantwortet 10 Jan, 09:32

Henri's gravatar image

Henri
10.0k31730

bearbeitet 10 Jan, 09:39

Vielen, vielen Dank. Genau wie ich es verwenden möchte.

(10 Jan, 09:43) Tischa
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:

×6

Frage gestellt: 10 Jan, 09:09

Frage wurde angeschaut: 676 Mal

Zuletzt aktualisiert: 10 Jan, 10:29