我的 'GoogleChart Pie' 只显示薄片
My 'GoogleChart Pie' shows only thin slices
当我将数据回显到我的饼图时,只会显示薄片,百分比为 1% 和 0.2%。显然,这不是它应该显示的 100%。我已经尝试了所有类型的组合,但 w/o 运气不好。
请参阅此处的示例:https://imgur.com/a/164Btqu
我的代码:
<?php
include "config.php";
$query = "SELECT COUNT(CASE WHEN Success = '1' THEN 1 ELSE NULL END) AS Successes, COUNT(CASE WHEN Success = '0' AND EndTime > '1970-01-01 00:00:00' THEN 1 ELSE NULL END) AS Failures, COUNT(CASE WHEN Success = '0' AND EndTime = '1970-01-01 00:00:00' THEN 1 ELSE NULL END) As Incompletes, COUNT(*) AS Total FROM DiskOperationLog";
$result = mysqli_query($dbhandle, $query);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="300">
<title>WipeDrive Dashboard</title>
<link rel="icon" href="favicon.png" sizes="16x16" type="image/png">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
</head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart()
{
var data = google.visualization.arrayToDataTable([
['Success', 'Fail'],
<?php
while($row = mysqli_fetch_array($result)) {
echo "['Successes', '$row[0]'], ['Failures', '$row[1]']";
}
?>
]);
var options = {
title: 'Wipe Results',
pieSliceText: 'value-and-percentage',
slices: {0: {color: '#1bbd0e'}, 1:{color: '#ff3333'}},
is3D:true,
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<br /><br />
<div style="width:900px;">
<h3 align="left">WipeDrive Dashboard</h3>
<br />
<div id="piechart" style="width: 755px; height: 375px;"></div>
</div>
</body>
</html>
假设原因在 'echo' 行中,我已经在这里尝试了所有我能想到的。
下面给出了正确的图表,但是name和value是一样的,都是金额。
因此,如果值为 179 和 33,则饼图被正确划分,但名称中没有“成功”和“失败”,而是数字 (179 和 33)。
echo "['".$row["Successes"]."', ".$row[0]."],";
echo "['".$row["Failures"]."', ".$row[1]."],";
如果我在下面回显,图表确实显示 100%,看起来它正在运行。所以我想添加第二个值是这里的问题,我错过了一个重要的 step/function/option.
echo "['Successes', '$row[0]']";
提前致谢!
根据 documentation,您误用了 google.visualization.arrayToDataTable
。
此外,您不需要使用循环,因为您总是只有一行。
以下应正确初始化您的 data
变量:
<?php $row = mysqli_fetch_array($result); ?>
var data = google.visualization.arrayToDataTable([
[
{label: 'Outcome', type: 'string'},
{label: 'Count', type: 'number'},
],
['Success', parseInt('<?php echo $row[0]; ?>')],
['Fail', parseInt('<?php echo $row[1]; ?>')]
]);
如果短开放标签被激活,您可以使用 <?= $row[0] ?>
而不是 <?php echo $row[0]; ?>
。
当我将数据回显到我的饼图时,只会显示薄片,百分比为 1% 和 0.2%。显然,这不是它应该显示的 100%。我已经尝试了所有类型的组合,但 w/o 运气不好。 请参阅此处的示例:https://imgur.com/a/164Btqu
我的代码:
<?php
include "config.php";
$query = "SELECT COUNT(CASE WHEN Success = '1' THEN 1 ELSE NULL END) AS Successes, COUNT(CASE WHEN Success = '0' AND EndTime > '1970-01-01 00:00:00' THEN 1 ELSE NULL END) AS Failures, COUNT(CASE WHEN Success = '0' AND EndTime = '1970-01-01 00:00:00' THEN 1 ELSE NULL END) As Incompletes, COUNT(*) AS Total FROM DiskOperationLog";
$result = mysqli_query($dbhandle, $query);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="300">
<title>WipeDrive Dashboard</title>
<link rel="icon" href="favicon.png" sizes="16x16" type="image/png">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
</head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart()
{
var data = google.visualization.arrayToDataTable([
['Success', 'Fail'],
<?php
while($row = mysqli_fetch_array($result)) {
echo "['Successes', '$row[0]'], ['Failures', '$row[1]']";
}
?>
]);
var options = {
title: 'Wipe Results',
pieSliceText: 'value-and-percentage',
slices: {0: {color: '#1bbd0e'}, 1:{color: '#ff3333'}},
is3D:true,
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<br /><br />
<div style="width:900px;">
<h3 align="left">WipeDrive Dashboard</h3>
<br />
<div id="piechart" style="width: 755px; height: 375px;"></div>
</div>
</body>
</html>
假设原因在 'echo' 行中,我已经在这里尝试了所有我能想到的。
下面给出了正确的图表,但是name和value是一样的,都是金额。 因此,如果值为 179 和 33,则饼图被正确划分,但名称中没有“成功”和“失败”,而是数字 (179 和 33)。
echo "['".$row["Successes"]."', ".$row[0]."],";
echo "['".$row["Failures"]."', ".$row[1]."],";
如果我在下面回显,图表确实显示 100%,看起来它正在运行。所以我想添加第二个值是这里的问题,我错过了一个重要的 step/function/option.
echo "['Successes', '$row[0]']";
提前致谢!
根据 documentation,您误用了 google.visualization.arrayToDataTable
。
此外,您不需要使用循环,因为您总是只有一行。
以下应正确初始化您的 data
变量:
<?php $row = mysqli_fetch_array($result); ?>
var data = google.visualization.arrayToDataTable([
[
{label: 'Outcome', type: 'string'},
{label: 'Count', type: 'number'},
],
['Success', parseInt('<?php echo $row[0]; ?>')],
['Fail', parseInt('<?php echo $row[1]; ?>')]
]);
如果短开放标签被激活,您可以使用 <?= $row[0] ?>
而不是 <?php echo $row[0]; ?>
。