Farbe vom Prozentwert anhängig
Tobias L.
- php
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
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;
?>
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";
}
}
@@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