Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Multiplizieren von Variableninhalten in TikZ

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.11.2007
    Beiträge
    79

    Multiplizieren von Variableninhalten in TikZ

    Hallo,

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

    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?

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.863
    Moin moin,
    Zitat Zitat von Stefan2902 Beitrag anzeigen
    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?
    {10\y}? {\y 0}? Oder vllt \y gleich entsprechend der textualen Ausgabe definieren und die Zeichnung entsprechend skalieren?

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.11.2007
    Beiträge
    79
    Danke. Leider funktionieren die Befehle:

    Code:
    {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?

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.01.2009
    Beiträge
    40
    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.

    Code:
    \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}
    Geändert von mermshaus (05-04-2009 um 15:21 Uhr) Grund: Bug

  5. #5
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.863
    Moin nochmal,
    Zitat Zitat von Stefan2902 Beitrag anzeigen
    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
    Code:
    \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
    Rainer
    There's nothing a good whack with a hammer won't fix!

  6. #6
    Registrierter Benutzer
    Registriert seit
    26.11.2007
    Beiträge
    79
    Vielen Dank. Das ist genau das, was ich gesucht habe.

    Gruß
    Stefan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •