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

Posted

技术标签:

【中文标题】如何为图表创建动态颜色列表【英文标题】:How to create dynamic color list for charts 【发布时间】:2012-04-03 09:51:41 【问题描述】:

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

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

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

但我需要像这样使用 phpfor 循环/foreach 循环)的动态方式

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

我不知道要创建动态颜色列表,也请查看屏幕截图以进行验证

【问题讨论】:

你也想要一串随机的颜色吗? 但是如何和帮助绝对值得赞赏 【参考方案1】:

对于随机的颜色字符串,这里:

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

【讨论】:

我喜欢你的代码thanx与我分享你的经验也看到这个链接我测试过codepad.org/Awq16Wnu【参考方案2】:

我更喜欢使用dechex() 函数的方法。首先你必须准备三个 0-255 的随机数,将它们转换为十六进制并连接成一个字符串。然后您还可以使用计算出的数字来分配文本颜色:黑色表示浅色或白色表示较深,例如:

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

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

【讨论】:

以上是关于如何为图表创建动态颜色列表的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:如何为每个变量创建具有不同样式和颜色的线图?

如何为我的 d3 图表标题设置文本颜色?

Plotly:如何为使用多条轨迹创建的图形设置调色板?

如何为 QPushButton 的背景颜色设置动画(动态更改按钮颜色)

如何为网页创建滑块图?

如何为 UITableView 部分标题动态设置背景颜色?