Hallo an alle Forenmitglieder, ich habe folgendes Problem mit meinem Kreisdiagramm. Ich würde gerne die einzelnen Sektoren im Kreisdiagramm farblich voneinander unterscheiden. Momentan wird der ganze Kreis in rot ausgefühlt, da in der foreach-schleife alle Felder so formatiert werden. Besteht die Möglichkeit trotz Schleife das separat anzupassen? Des Weiteren finde ich die Prozentangaben im kleinsten Feld nicht optimal gelöst. Schöner fände ich es, wenn dort die Linien unterbrochen sind. Vielen Dank schon einmal vor ab... Open in writeLaTeX
\documentclass[11pt]{scrreprt} \usepackage[top=2cm,left=3cm,right=3cm,bottom=4cm]{geometry} \usepackage{graphicx} \usepackage{booktabs} \usepackage{paralist} \usepackage{tikz} \usetikzlibrary{mindmap,trees} \usetikzlibrary{matrix} \usetikzlibrary{decorations.pathreplacing} \usetikzlibrary{positioning,shadings} \begin{document} \begin{center} \begin{tikzpicture} \foreach \start/\end/\middle/\percent/\anchor/\name in { 0/263/131/72.9/above/Dienstleistungsbereich inkl. Baugewerbe/72.9, 263/357/310/26.2/below/Produzierendes Gewerbe/26.2, 357/360/358/0.9/right/Land- und Forstwirtschaft/0.9} { \draw[fill=red] (0,0) -- (\end:3cm) arc (\end:\start:3cm) node at (\middle:1.8cm) {\percent \%}; \draw (\middle:3cm) -- (\middle:3.9cm) node[\anchor] {\name}; }; \end{tikzpicture} \end{center} \end{document} |
Du kannst zum Beispiel die angegebenen Prozentzahlen nutzen, um Farben zu mischen. Die Linien zwischen den Kreissegmenten würde ich ganz weglassen. Den mittleren Winkel kann man in jeder Schleife berechnen lassen: Open in writeLaTeX
\documentclass[tikz,margin=5mm]{standalone} \begin{document} \begin{tikzpicture} \def\radius{3}% Kreisradius festlegen \foreach \start/\end/\percent/\anchor/\name in { 0/263/72.9/above/Dienstleistungsbereich inkl. Baugewerbe, 263/357/26.2/below/Produzierendes Gewerbe, 357/360/0.9/right/Land- und Forstwirtschaft } {\pgfmathsetmacro\middle{0.5*(\start+\end)} \path[fill=red!\percent!yellow] (0,0) -- (\end:\radius) arc (\end:\start:\radius) node at (\middle:{0.55*\radius}) {\percent \%}; \draw (\middle:\radius) -- (\middle:{1.3*\radius}) node[\anchor] {\name}; }; \draw[thin]circle[radius=\radius];% Kreis zeichnen \end{tikzpicture} \end{document} Alternativ kann man natürlich auch für jedes Segment eine Farbe in die Schleife einbeziehen und die Prozentangaben mit einem transparenten weißen Hintergrund versehen: Open in writeLaTeX
\documentclass[tikz,margin=5mm]{standalone} \begin{document} \begin{tikzpicture} \def\radius{3}% Kreisradius festlegen \foreach \start/\end/\farbe/\percent/\anchor/\name in { 0/263/red/72.9/above/Dienstleistungsbereich inkl. Baugewerbe, 263/357/green/26.2/below/Produzierendes Gewerbe, 357/360/blue/0.9/right/Land- und Forstwirtschaft } {\pgfmathsetmacro\middle{0.5*(\start+\end)} \draw[fill=\farbe] (0,0) -- (\end:\radius) arc (\end:\start:\radius) node[fill=white, opacity=0.7, text opacity=1,inner sep=1pt]% leicht transparent at (\middle:{0.55*\radius}) {\percent \%}; \draw (\middle:\radius) -- (\middle:{1.3*\radius}) node[\anchor] {\name}; }; \end{tikzpicture} \end{document} beantwortet 07 Mai '14, 16:27 esdd Vielen lieben Dank für die schnell Antwort esdd! Das gefällt mir so schon ganz gut. Prima ;-)
(07 Mai '14, 17:03)
sascha
|
In meiner Lösung muss man weder Farbe noch irgendwelche Anker angeben. Ein Zähler läuft selbstständig durch eine sog. "cycle list" und wählt einfach immer die nächste Farbe aus. Dann fängt er wieder von vorne an. Weiter unten ist ein Beispiel, das dieses Verhalten zeigt. Open in writeLaTeX
\documentclass[tikz]{standalone} \begin{document} \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 in { 72.9/Dienstleistungsbereich inkl. Baugewerbe, 26.2/Produzierendes Gewerbe, 0.9/Land- und Forstwirtschaft, } { \ifx\percent\empty\else % If \percent is empty, do nothing \global\advance\cyclecount by 1 % Advance cyclecount \global\advance\ind by 1 % Advance list index \ifnum3<\cyclecount % If cyclecount is larger than list \global\cyclecount=0 % reset cyclecount and \global\ind=0 % reset list index \fi \pgfmathparse{\cyclelist[\the\ind]} % Get color from cycle list \edef\color{\pgfmathresult} % and store as \color % Draw angle and set labels \draw[fill={\color!50},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:\parbox{3cm}{\raggedright\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} Beispiel für die cycle listOpen in writeLaTeX
\documentclass[tikz]{standalone} \begin{document} \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 in { 46.6/Chrome, 24.6/Internet Explorer, 20.4/Firefox, 5.1/Safari, 1.3/Opera, 2.0/Other } { \ifx\percent\empty\else % If \percent is empty, do nothing \global\advance\cyclecount by 1 % Advance cyclecount \global\advance\ind by 1 % Advance list index \ifnum3<\cyclecount % If cyclecount is larger than list \global\cyclecount=0 % reset cyclecount and \global\ind=0 % reset list index \fi \pgfmathparse{\cyclelist[\the\ind]} % Get color from cycle list \edef\color{\pgfmathresult} % and store as \color % Draw angle and set labels \draw[fill={\color!50},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} beantwortet 08 Mai '14, 14:02 Henri Hallo Henri, tolles Kreisdagramm. Aber warum kann man nicht mehr als 4 Farben in die cycle list setzen? Wenn man 5 Farben definiert werden trotzdem nur 4 gezeichnet. Ich habe 5 Elemente für mein Tortendiagramm und nun werden 1 und 5 mit derselben Farbe gezeichnet. Wie kann man den Tex/Tkiz Code erweitern?
(17 Sep '14, 18:04)
lukasO
1
@lukas Ich habe deine Antwort in ein Kommentar zu Henris Frage umgewandelt. Hier auf TeXwelt.de sollten Antworten immer richtige Antworten zum Ursprungsproblem sein. Die Lösungen/Antworten werden nach Stimmen sortiert, so ist die bestbewertete Antwort ganz oben. Ach übriges, Willkommen ;-)
(17 Sep '14, 18:09)
Johannes
1
@lukasO Ergänze in
eine fünfte Farbe und ersetze die 3 in
durch eine 4.
(17 Sep '14, 18:14)
esdd
Vielen Dank für die schnelle Antwort, es klappt! Nun habe ich aber das Problem, dass ich das Diagramm ausgelagert habe in eine eigene Tex Datei, diese dann über input{subsubdoc1} in eine andere Text Datei eingebettet habe, die andere Tex Datei wiederum in meine Hauptdatei (Bachelorarbeit). Jetzt bekomme ich 35 Errors obwohl sich das Diagramm als standalone kompilieren lässt. (Package standalone habe ich in meiner Hauptdatei eingebettet)
(17 Sep '14, 18:41)
lukasO
Kannst du das irgendwie auf ein Minimum runterbrechen? Zumindest für mich liegt keine Ursache auf der hand. Vielleicht beißt sich was mit einem anderen Paket. Mein Tipp, erstelle ein Minimalbeispiel (<- Link zur Anleitung) und poste das dann als neue Frage. Könnte ja auch interessant für andere sein.
(17 Sep '14, 21:49)
Johannes
Also beispielsweise habe ich 3 Dateien: hauptdatei.tex, ausgelagert.tex, diagramm.tex. Inhalt hauptdatei.tex:
(17 Sep '14, 22:23)
lukasO
(17 Sep '14, 22:23)
lukasO
Inhalt ausgelagert.tex:
(17 Sep '14, 22:24)
lukasO
Inhalt Diagramm.tex: (siehe Tortendiagramm von oben mit standalone Package)
(17 Sep '14, 22:24)
lukasO
In der Hauptdatei musst Du noch
(19 Sep '14, 00:06)
esdd
@Henri. Wie kann ich Dein Beispiel so anpassen, dass ich für jedes "Kuchenstück" eine feste Farbe zuordnen kann? Die Benennung des Feldes würde ich gerne so gestalten: http://www.freiburgxtra.de/typo3temp/pics/36d94a5fc8.jpg. Lässt sich denn ein Kuchenstück auch mehrfarbig gestalten? Bsp. Neues FDP-Logo (wenn die FDP natürlich sonst gelb im Tortenstück aufgeführt wird http://polpix.sueddeutsche.com/bild/1.2294196.1420648582/860x860/schriftgestaltung.jpg)
(08 Jan '16, 22:12)
Tischa
@Tischa Den Stücken feste Farben zuzuordnen ist kein Problem, siehe hier. Die Benennung kann ich leider nicht nachvollziehen (Link offline, Fehler 404). Ein Stück mehrfarbig zu gestalten geht auch mit
(08 Jan '16, 23:02)
Henri
@Henri. Vielen Dank! Sorry, für den defekten Link. Ich dachte in etwa so. Wäre auch eine Darstellung von Balken- und Kreisdiagramm ,,in einem Wisch" denkbar, so dass man die Zahlen nur einmal definieren/angeben muss und die Ausgabe steuern, d.h. nach Bedarf entweder ein Balken oder Kreisdiagramm ausgeben kann? http://www.guntramsdorf.at/ONLWYSIWYG/IMG/wahlen_08_nr.jpg Wäre es besser, wenn ich einen eigenen Thread aufmache? Edit: Leider war ich mit meinem eigenen Beispiel nicht erfolgreich.
(08 Jan '16, 23:38)
Tischa
Ergebnis 5 von 13
show 8 more comments
|