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 '16, 15:09

Tischa's gravatar image

Tischa
1.4k30106129
Akzeptiert-Rate: 15%

bearbeitet 10 Jan '16, 15:49

Henri's gravatar image

Henri
15.7k133943

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 '16, 15:22) Tischa

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

(10 Jan '16, 15: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 '16, 15: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 '16, 16: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 '16, 15:32

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 10 Jan '16, 15:39

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

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

×7

gestellte Frage: 10 Jan '16, 15:09

Frage wurde gesehen: 7,239 Mal

zuletzt geändert: 10 Jan '16, 16:29