alexraasch
16-09-2009, 01:44
Hallo,
ich habe in Anlehnung an das Kreisdiagramm-Beispiel aus dem TikZ-Handbuch Seite 69 ein "Tacho-Diagramm" programmiert. Ich rechne für die rote Zahl im Beispiel den Winkel aus, an dem diese Zahl stehen soll. Als Ergebnis erhalte ich eine Zahl mit Dezimalstelle, was nicht schön ist. Kann man das irgendwie so umrechnen, dass eine natürliche Zahl herauskommt?
Berechnung des Winkels in Zeile 3:
\newcommand{\tacho}[3]{
\begin{tikzpicture}
\pgfmathparse{180-180*(#1/100)}\let\Winkel\pgfmathresult
\pgfmathparse{100-#1}\let\Gegenwert\pgfmathresult
\begin{scope}[line width=4mm]
\draw[#3] (0:1.8cm) arc (0:\Winkel:1.8cm);
\draw[#2] (\Winkel:1.8cm) arc (\Winkel:180:1.8cm);
\foreach \angle in {9,18,...,171} {
\draw[black!15,thin] (\angle:16mm) -- (\angle:20mm);
}
\end{scope}
\draw[black!30,thick] (0:1.6cm) -- (0:2.0cm) arc (0:180:2.0cm)
-- (-1.6cm,0) arc (180:0:1.6cm) -- cycle;
\ifthenelse{#1 > 50 \or #1 = 50}{%
\draw (0,0) node[good,above,inner sep=0mm,text depth=0mm] {#1\,\%};
\pgfmathparse{\Winkel/2}\let\Halbwinkel\pgfmathresult
\draw (\Halbwinkel:2.2cm) node[bad,above right,inner sep=0mm] {\Gegenwert\,\%};
}{%
\draw (0,0) node[bad,above,inner sep=0mm,text depth=0mm] {#1\,\%};
\pgfmathparse{(180+\Winkel)/2}\let\Halbwinkel\pgfmathresult
\draw (\Halbwinkel:2.2cm) node[good,above left,inner sep=0mm] {\Gegenwert\,\%};
}
\end{tikzpicture}
}
Aufruf mit
\tacho{67}{green}{red}
ich habe in Anlehnung an das Kreisdiagramm-Beispiel aus dem TikZ-Handbuch Seite 69 ein "Tacho-Diagramm" programmiert. Ich rechne für die rote Zahl im Beispiel den Winkel aus, an dem diese Zahl stehen soll. Als Ergebnis erhalte ich eine Zahl mit Dezimalstelle, was nicht schön ist. Kann man das irgendwie so umrechnen, dass eine natürliche Zahl herauskommt?
Berechnung des Winkels in Zeile 3:
\newcommand{\tacho}[3]{
\begin{tikzpicture}
\pgfmathparse{180-180*(#1/100)}\let\Winkel\pgfmathresult
\pgfmathparse{100-#1}\let\Gegenwert\pgfmathresult
\begin{scope}[line width=4mm]
\draw[#3] (0:1.8cm) arc (0:\Winkel:1.8cm);
\draw[#2] (\Winkel:1.8cm) arc (\Winkel:180:1.8cm);
\foreach \angle in {9,18,...,171} {
\draw[black!15,thin] (\angle:16mm) -- (\angle:20mm);
}
\end{scope}
\draw[black!30,thick] (0:1.6cm) -- (0:2.0cm) arc (0:180:2.0cm)
-- (-1.6cm,0) arc (180:0:1.6cm) -- cycle;
\ifthenelse{#1 > 50 \or #1 = 50}{%
\draw (0,0) node[good,above,inner sep=0mm,text depth=0mm] {#1\,\%};
\pgfmathparse{\Winkel/2}\let\Halbwinkel\pgfmathresult
\draw (\Halbwinkel:2.2cm) node[bad,above right,inner sep=0mm] {\Gegenwert\,\%};
}{%
\draw (0,0) node[bad,above,inner sep=0mm,text depth=0mm] {#1\,\%};
\pgfmathparse{(180+\Winkel)/2}\let\Halbwinkel\pgfmathresult
\draw (\Halbwinkel:2.2cm) node[good,above left,inner sep=0mm] {\Gegenwert\,\%};
}
\end{tikzpicture}
}
Aufruf mit
\tacho{67}{green}{red}