Как создать динамический список цветов для диаграмм - PullRequest
4 голосов
/ 18 марта 2012

Как создать динамический список цветов для диаграмм

По сути, у меня есть другое значение в моей базе данных, или каждое значение содержит каждый процент, и мне нужно показать этот процент в круговой диаграмме разными цветами ....

Это пример кода круговой диаграммы в статическом режиме

<color value="#99CDFB"/>
<color value="#3366FB"/>
<color value="#0000FA"/>
<color value="#F8CC00"/>
<color value="#F89900"/>
<color value="#F76600"/>

но мне нужен динамический способ с использованием PHP ( для цикла loop / foreach ), подобный этому

$color = "";
foreach($data as $data){
   echo '<color value=".$color."/>';
}

и я не знаю, чтобы создать динамический список цветов, также смотрите скриншот для проверки enter image description here

Ответы [ 2 ]

7 голосов
/ 18 марта 2012

Для случайной строки цветов, здесь:

function randColor( $numColors ) {
    $chars = "ABCDEF0123456789";   
    $size = strlen( $chars );
    $str = array();
    for( $i = 0; $i < $numColors; $i++ ) {
        for( $j = 0; $j < 6; $j++ ) {
            $str[$i] .= $chars[ rand( 0, $size - 1 ) ];
        }
    }
    return $str;
}

Затем в вашей функции используйте $colors = randColor( 6 );, чтобы создать в общей сложности 6 различных цветов.После этого вот ваш метод вывода цвета.

foreach( $colors as $codeColor ) {
    echo "<color value=\"#{$codeColor}\" />\n";
}
4 голосов
/ 18 марта 2012

Я бы предпочел использовать подход с использованием функции dechex () .Сначала вы должны подготовить три случайных числа 0-255, преобразовать их в шестнадцатеричное и объединить, чтобы сделать строку.Затем вы также можете использовать вычисленные числа, чтобы назначить цвет текста: черный для светлых цветов или белый для более темных, например:

    if( ($r + $g + $b) / 3 > 126)
        $textcolor="#000000";
    else
        $textcolor="#FFFFFF";

Другая идея заключается в создании затененных случайных цветов.Сначала вы можете сгенерировать три случайных числа от 0 до, скажем, 40 - для первого цвета, затем второй цвет будет от 40 до 80 и так далее ...

...