Ich versuche mich gerade an einem Kreisdiagramm, um Wahlergebnisse darzustellen. (Wie ordne ich in einem Kreisdiagramm einzelnen Abschnitten feste Farben zu?). Die Wahlergebnisse möchte ich auch als Balkendiagramm ausgeben. Ist es möglich mit einem Datensatz zwei verschiedene Ausgaben (Kreis- und Balkendiagramme) erreichen oder funktioniert das grds. nicht?

gefragt 10 Jan, 09:15

Tischa's gravatar image

Tischa
92531953
Akzeptiert: 71%

bearbeitet 10 Jan, 09:16


Ich speichere den Datensatz einfach im Makro \data, dann muss ich ihn nicht in jeder \foreach Schleife wiederholen. Das ganze würde prinzipiell auch in einer einzelnen Schleife gehen, ist meines Erachtens nach aber nicht praktikabel.

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
\begin{document}

\newcommand\data{
  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%
}

\begin{tikzpicture}
  \begin{scope}
    \global\ind=-1
    \foreach \percent/\name/\color in \data {
      \ifx\percent\empty\else                 % If \percent is empty, do nothing
      \global\advance\ind by 1              % Advance list index
      % Draw angle and set labels
      \filldraw[color=\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{scope}

  \pgfmathsetmacro\barmaxheight{5}
  \begin{scope}[shift={(-2,-4-\barmaxheight)}]
    \draw[<->] (0,\barmaxheight+0.5) |- (8,0);
    \draw (2pt,\barmaxheight) -- (-2pt,\barmaxheight) node[left] {100\%};
    \draw (2pt,.5*\barmaxheight) -- (-2pt,.5*\barmaxheight) node[left] {50\%};
    \global\ind=-1
    \foreach \percent/\name/\color in \data {
      \ifx\percent\empty\else                 % If \percent is empty, do nothing
      \global\advance\ind by 1              % Advance list index
      % Draw angle and set labels
      \filldraw[color=\color] (\ind+.7,0) rectangle (\ind+1.2,\barmaxheight/100*\percent);
      \node[above] at (\ind+1,\barmaxheight/100*\percent) {\percent\%};
      \node[rotate=45,anchor=base east,yshift=-1ex] at (\ind+1,0) {\name};
      \fi
    };    
  \end{scope}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 10 Jan, 10:03

Henri's gravatar image

Henri
10.0k31730

bearbeitet 10 Jan, 10:42

Genial. Vielen Dank.:-D

(10 Jan, 11:12) 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
×3

Frage gestellt: 10 Jan, 09:15

Frage wurde angeschaut: 560 Mal

Zuletzt aktualisiert: 10 Jan, 11:12