PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Multiplizieren von Variableninhalten in TikZ



Stefan2902
05-04-2009, 09:14
Hallo,

ich habe mit dem TikZ Paket ein Balkendiagramm erstellt. Um die Prozente nun an die Balken zu schreiben verwende ich folgenden Code:



\draw[fill=myblue] (\x cm,0cm) rectangle (1cm+\x cm,\y cm) node at (0.5cm + \x cm,\y cm + 0.3cm) {\y};


Ich würde gerne die Variable \y (siehe letzte geschweifte Klammer) mit 10 multiplizieren, da ansonsten immer 0,7% statt 7% über dem Balken steht.

Leider weiss ich nicht, wie man mit diesen Werten rechnen kann? Jemand eine Idee?

rais
05-04-2009, 10:14
Moin moin,




\draw[fill=myblue] (\x cm,0cm) rectangle (1cm+\x cm,\y cm) node at (0.5cm + \x cm,\y cm + 0.3cm) {\y};


Ich würde gerne die Variable \y (siehe letzte geschweifte Klammer) mit 10 multiplizieren, da ansonsten immer 0,7% statt 7% über dem Balken steht.

Leider weiss ich nicht, wie man mit diesen Werten rechnen kann? Jemand eine Idee?
{10\y}? {\y 0}? Oder vllt \y gleich entsprechend der textualen Ausgabe definieren und die Zeichnung entsprechend skalieren?

MfG

Stefan2902
05-04-2009, 10:20
Danke. Leider funktionieren die Befehle:



{10\y}? {\y 0}?


nur, um eine 10 vor die eigentlich Zahl zu schreiben, oder ein Null anzuhängen.

Ich würde jedoch gern aus eine 1,1 z.B. eine 11 machen.

Jemand eine Idee?

mermshaus
05-04-2009, 15:19
Hallo.

Mit pgfmath sollte das generell funktionieren. Ich kann allerdings nicht sagen, wieso \pgfresult nicht direkt als Node-Text gesetzt werden kann und wie man die Ausgabe formatieren kann. Im Beispiel wird "2" zu "20.0". Ich habe noch nicht herausgefunden, wie man daraus "20" macht. Auch weiß ich nicht, ob ich mit den \def- und \let-Befehlen richtig hantiere. Da möge man mich berichtigen. :)

Generell würde ich dir aber auch empfehlen, rais' Ratschlag zu folgen und nicht die textuelle Ausgabe zu errechnen, sondern die Balkenhöhe. Dann hättest du vermutlich das Problem erst gar nicht.

Gruß

Marc

Edit: Oh, hehe. "2.2" wird zu "21.99997". Na ja, versuch war es wert. ;)


\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{pgfmath}

\begin{document}

\begin{tikzpicture}
\definecolor{myblue}{rgb}{.5,.5,1}

\def\x{3}
\def\y{2}

\pgfmathparse{10*\y}
\let\res\pgfmathresult

\draw[fill=myblue] (\x cm,0cm) rectangle (1cm+\x cm,\y cm) node at (0.5cm + \x cm,\y cm + 0.3cm) {\res};
\end{tikzpicture}

\end{document}

rais
05-04-2009, 20:02
Moin nochmal,


Ich würde gerne die Variable \y (siehe letzte geschweifte Klammer) mit 10 multiplizieren, da ansonsten immer 0,7% statt 7% über dem Balken steht.

um auf meinen dritten Gedankengang -- wenn auch nicht ganz -- zurückzukommen: warum nimmst Du nicht -- in Deinem \foreach-Statement? -- den um Faktor 10 angepassten Wert für \y? Etwa


\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz,siunitx}

\begin{document}

\begin{tikzpicture}
\definecolor{myblue}{rgb}{0.3,0.5,0.8}

\foreach\x/\y in {1/7, 2.5/11, 4/22, 5.5/37, 7/99}
\draw[fill=myblue] (\x cm,0cm) rectangle (1cm+\x cm,\y mm) node at (5mm + \x cm,\y mm + 3mm) {\SI{\y}{\percent}};
\end{tikzpicture}

\end{document}
sollte doch schon tun ...

PS) Bedank Dich vor Allem bei Marc für die Erstellung eines konkreten Beispiels;-)

MfG

Stefan2902
07-04-2009, 07:20
Vielen Dank. Das ist genau das, was ich gesucht habe.

Gruß
Stefan