如何为图表创建动态颜色列表

时间:2012-03-18 18:51:55

标签: php api charts logic pie-chart

如何为图表创建动态颜色列表

基本上我的数据库中有不同的值,或者每个值都包含每个百分比,我需要在不同颜色的饼图中显示这个百分比....

这是静态方式饼图的示例代码

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

但我需要使用PHP的动态方式( for loop / foreach loop ),如下所示

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

我不知道创建动态颜色列表还会看到屏幕截图进行验证 enter image description here

2 个答案:

答案 0 :(得分:7)

对于随机颜色串,这里:

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";
}

答案 1 :(得分:4)

我更喜欢使用dechex()函数的aproach。首先,您必须准备三个0-255个随机数,将它们转换为十六进制并加入以创建一个字符串。然后,您还可以使用计算出的数字来指定文本颜色:浅色为黑色,深色为白色,如:

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

另一个想法是生成阴影随机颜色。您可以先从0生成三个随机数,然后说40 - 对于第一种颜色,然后,第二种颜色将从40到80,依此类推......