如何为图表创建动态颜色列表
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"/>
但我需要像这样使用 php(for 循环/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,依此类推......
【讨论】:
以上是关于如何为图表创建动态颜色列表的主要内容,如果未能解决你的问题,请参考以下文章