Tobias L.: Farbe vom Prozentwert anhängig

Hallo,

ich möchte bei einer Umfrage die verschiedenen Balken der Ergebnisse farbig gestalten.
Hier sollen 100% ein saftiges Grün (#00FF00) und 0% ein kräftiges rot (#FF0000) sein.

Gibt es eine Möglichkeit die Farbe von rot über gelb nach grün vom Prozentwert abhängig zu machen. Hier wäre dann z.B. 50% ein gelb (#FFFF00).

Grüße Tobias

  1. Hallo,

    ich möchte bei einer Umfrage die verschiedenen Balken der Ergebnisse farbig gestalten.
    Hier sollen 100% ein saftiges Grün (#00FF00) und 0% ein kräftiges rot (#FF0000) sein.

    Gibt es eine Möglichkeit die Farbe von rot über gelb nach grün vom Prozentwert abhängig zu machen. Hier wäre dann z.B. 50% ein gelb (#FFFF00).

    Grüße Tobias

    Du musst lediglich noch eine Funktion finden, die den INT Wert in ein Hex umrechnet..

    <?php

    $Prozentsatz = 50;

    $intRot = 0;
    $intGruen = 0;

    if ($Prozentsatz > 50)
    { $intRot = (50-$Prozentsatz)/100*255*2+255;}
    else { $intRot = 255; }

    if ($Prozentsatz < 50)
    { $intGruen = ($Prozentsatz-50)/100*255*2+255; }
    else { $intGruen = 255; }

    echo $intRot;
    echo '|';
    echo $intGruen;
    ?>

    1. Danke für deine Antwort.

      Hab mittlerweile einen Weg gefunden, der mir Kopfzerbrechen bereitet hat.
      Dachte ich bekomm es nicht hin, aber hab es irgendwie geschafft.

      Hier mein Weg:
      $array_balken ist der width-Wert des Balkens
      $max_balken ist der maximale Wert im Array

      Grundgedanke:
      Wird der Balken größer als die Hälfte muss der Rotanteil von 255 proportional abnehmen, Grün bleibt voll.
      Wird der Balken kleiner als die Hälfte muss der Grünanteil von 255
      proportional abnehmen, Rot bleibt voll.
      Genau die Hälfte, Rot und Grün voll = Gelb.

      Die ganzen Werte müssen dann immer von Dezimal in Hex mit dechex($wert) umgerechnet werden und gegebenenfalls noch eine 0 voransetzen.

      Es funktioniert, lustig!

      if ( $array_balken[$i] > ($max_balken / 2) )
      {
       $wert = $array_balken[$i] - ($max_balken / 2);
       $wert = (255 / 70) * $wert;
       $wert = 255 - $wert;
       $wert_hex = dechex($wert);
       if (strlen($wert_hex) == 1)
       {
        $wert_hex = "0".$wert_hex;
       }
       $color = "#".$wert_hex."FF00";
      } else {
       if ( $array_balken[$i] < ($max_balken / 2) )
       {
        $wert = (255 / 70) * $array_balken[$i];
        $wert_hex = dechex($wert);
        if (strlen($wert_hex) == 1)
        {
         $wert_hex = "0".$wert_hex;
        }
        $color = "#FF".$wert_hex."00";
       } else {
        $color = "#FFFF00";
       }
      }

      1. @@Tobias L.:

        Die ganzen Werte müssen dann immer von Dezimal in Hex mit dechex($wert) umgerechnet werden

        Nö, müssen sie nicht. Auch dezimale Angaben sind möglich. [CSS2 §4.3.6]

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.