我正在使用 Chart.js 制作饼图。我希望 while 循环生成的每个切片都有不同的颜色。
$pull_request = 'SELECT * FROM `oc_aa_affiliatecollclicktracking`';
$sqli = $db->query($pull_request);
$num_rows=mysqli_num_rows($sqli);
$cur_row=0;
var pieData = [
<?php
while ($row = mysqli_fetch_array($sqli)) {
$color=intval(256*$cur_row/($num_rows-1));
$cur_row++;
echo '{
value: '.$row["product_clicks"].',
color: "rgb(256,'.$color.')", // NEED TO BE RANDOM FOR EVERY ROW/SLICE
highlight: "#333",
label: "' .$row["product_id"].'"
},';
}
?>
];
var ctx = document.getElementById("chart-area").getContext("2d");
window.myPie = new Chart(ctx).Pie(pieData);
} );
我发现随机颜色会在整个图表的页面刷新时发生变化,但不会针对单个切片发生变化。有什么想法吗?
最佳答案
您可以使用rand()
函数来获取特定范围内的随机数。
看看here
示例:
$color = "#" . rand(10,100);
你可以在任何你想要的地方替换$color。
如果您想要十六进制颜色,请使用此函数
function random_color(){
mt_srand((double)microtime()*1000000);
$c = '';
while(strlen($c)<6){
$c .= sprintf("%02X", mt_rand(0, 255));
}
return $c;
}
关于PHP 每行随机颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219168/