PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kreisdiagramm Tikz



Stefan2902
04-04-2009, 08:45
Hallo,

ich würde gern ein Kreisdiagramm analog zu dem aus der Tikz Doku (Seite 50) - siehe Anhang - erstellen.

Leider gibt es hierfür kein Codebeispiel, dass ich auf meine Bedürfnisse anpassen könnte.

Hat jemand eine Idee?

localghost
04-04-2009, 09:25
Ich meine, so etwas ähnliches mal in der Galerie von pgf/tikZ (http://ctan.org/pkg/pgf) gesehen zu haben [1]. Da müsstest Du aber mal selbst nach suchen. In der aktuellen Ausgabe der Anleitung (Version 2.00) ist das von dir genannte Beispiel übrigens auf Seite 69 abgebildet.

[1] TikZ and PGF examples (http://www.texample.net/tikz/examples/)


MfG
Thorsten¹

Stefan2902
04-04-2009, 09:37
Danke für den Hinweis. Ich habe mit die aktuelle Doku runtergeladen.

Ich habe mir die Sammlung nun mal angeschaut. Leider ist da kein vergleichbares Beispiel dabei :-(

Irgend eine andere Idee?

voss
04-04-2009, 11:08
Ich habe mir die Sammlung nun mal angeschaut. Leider ist da kein vergleichbares Beispiel dabei :-(

Irgend eine andere Idee?

hier, aber latex->dvips->ps2pdf wählen.


\documentclass{article}
\usepackage{pstricks,multido}
\SpecialCoor
\makeatletter
\def\psKreis#1#2#3{%
\degrees[#3]\psset{linecolor=black!50}
\pscircle{#1}\pscircle{!#1 #2 sub}
\multido{\iA=0+1}{#3}{%
\psline(#1;\iA)(!#1 #2 sub \iA\space\pst@angleunit PtoC )}%
\gdef\WEinheit{#3}\gdef\psRI{#1 }\gdef\psRII{#2 }}
\def\psData[#1]#2#3{%
\degrees[\WEinheit]%
\pst@cntc=#3 \advance\pst@cntc by -#2 \advance\pst@cntc by \@ne
\psset{fillcolor=#1,fillstyle=solid}
\multido{\iA=#2+1}{\the\pst@cntc}{%
\pscustom[linecolor=-#1]{
\psline(\psRI;\iA)(! \psRI \psRII sub \iA\space \pst@angleunit PtoC )
\psarc(0,0){!\psRI \psRII sub}{\iA}{!\iA\space 1 add }
\psline(!\psRI \psRII sub \iA\space 1 add \pst@angleunit PtoC )%
(!\psRI \iA\space 1 add \pst@angleunit PtoC )
\psarcn(0,0){!\psRI}{!\iA\space 1 add }{\iA}}
}%
\psset{fillstyle=none}\pscircle{\psRI}\pscircle{!\ psRI \psRII sub}
\ignorespaces}
\makeatother
\begin{document}

\begin{pspicture}(-4,-4)(4,4)
\psKreis{4}{1}{50}
\psData[green]{21}{23}
\psData[green!70!black!90]{24}{32}
\psData[black!80]{33}{42}
\psData[red!80]{43}{50}
\end{pspicture}

\end{document}


Herbert

localghost
04-04-2009, 11:13
Ein Ansatz für das Diagramm könnte folgendermaßen aussehen.

\begin{tikzpicture}[thick]
\draw[line width=5mm,green!75!black](0,0) +(144:2.25) arc (144:165.6:2.25cm);
\draw[line width=5mm,green!50!white](0,0) +(165.6:2.25) arc (165.6:230.4:2.25cm);
\draw[line width=5mm,gray](0,0) +(230.4:2.25) arc (230.4:302.4:2.25cm);
\draw[line width=5mm,red!50!white](0,0) +(302.4:2.25) arc (302.4:360:2.25cm);
\foreach \d in {7.2,14.4,...,360}
\draw[lightgray] (\d:2cm)--(\d:2.5cm);
\draw[lightgray](0,0) circle (2cm) (0,0) circle (2.5cm);
\node(0,0) {\parbox{3cm}{\centering Ratings given by 50 participants}};
\draw(0,0) +(0:2.8cm) node[anchor=west] {"`very bad"': 0 (0\%)};
\draw(0,0) +(331.2:2.5cm) node[anchor=north west] {"`bad"': 8 (16\%)};
\draw(0,0) +(266.4:2.8cm) node[anchor=north] {"`ok"': 10 (20\%)};
\draw(0,0) +(198:2.8cm) node[anchor=north east] {"`good"': 9 (18\%)};
\draw(0,0) +(154.8:2.8cm) node[anchor=south east] {"`very good"': 3 (6\%)};
\draw(0,0) +(72:2.8cm) node[anchor=south] {"`none"': 20 (40\%)};
\end{tikzpicture}
Ist abgestimmt auf 11pt Schriftgröße. Aber das lässt sich ja anpassen.

Stefan2902
04-04-2009, 15:02
Vielen Dank. Das ist genau das wonach ich gesucht habe!

Eine Frage habe ich noch. Kannst du mir die folgende Zeile ein wenig genauer erläutern?



\draw[line width=5mm,green!75!black](0,0) +(150:2.25) arc (150:172.5:2.25cm);


Mich interessiert primär der hintere Abschnitt: (0,0) +(150:2.25) arc (150:172.5:2.25cm). Was steht wofür?

localghost
04-04-2009, 15:15
Beachte, dass ich den Code korrigiert habe. Beim ersten Mal stimmte die Zuordnung und die Einteilung der Einheiten nicht ganz.

pgf/tikZ (http://ctan.org/pkg/pgf) ist bei Kreisbögen etwas gewöhnungsbedürftig. Deswegen muss man sich vom Ausgangspunkt (0,0) zunächst in einem Winkel von 150° um 2.25cm entfernen. An diesem Punkt wird dann damit begonnen, den Kreisbogen von 150° bis 165.6° mit einem Radius von 2.25cm zu zeichnen. Alles weitere erklärt die aber die Anleitung ganz ausführlich.

mermshaus
04-04-2009, 20:11
Hallo.

Ich fand das Ring-Beispiel so hübsch -- und vor allem überschaubar --, dass ich es als Inhalt für eine sehr simple Query-API (http://ermshaus.org/tmp/tikz/) genommen habe, die TikZ-Code anhand von Parametern erzeugt. Vielleicht interessiert es ja den ein oder anderen hier. Ist nix Wildes, aber ich wollte damit schon länger mal rumbasteln.

Gruß

Marc