我通过mysqli从数据库中提取数据来创建Google饼图。数据来自一列(a1),但每个条目都是不同的(例如,a、b、c),我列出了每个条目/答案的响应百分比。例如,a= 20% b= 30%
每个条目对应一种不同的社交媒体类型,我需要显示这种类型,但不会显示在数据库本身中。有没有一种方法可以改变图表的图例,而不是列出A,B,C,而是用一个自定义标签来代替它?(例如,不显示'A‘显示'Facebook')。
我试过在变量数据下使用标题,在选项下使用标签,在选项下使用图例。我觉得我好像错过了什么
<?php
$connect = mysqli_connect("localhost", "root", "root", "survey");
$query = "SELECT a1, count(*) as number FROM rtp2k GROUP BY a1";
$result = mysqli_query($connect, $query);
?>
<!DOCTYPE html>
<html>
<head>
<title>Sad me is Sad </title>
<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([
['social', 'number'],
<?php
while($row = mysqli_fetch_array($result))
{
echo "['".$row["a1"]."', ".$row["number"]."],";
}
?>
]);
var options = {
title: 'Which social networks do you use most often?',
//is3D:true,
pieHole: 0.4,
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<br /><br />
<div style="width:900px;">
<h3 align="center">Make Simple Pie Chart by Google Chart API with PHP Mysql</h3>
<br />
<div id="piechart" style="width: 900px; height: 500px;">
</div>
</div>
</body>
</html>
现在我的图例根据数据库中的内容列出了类型,(例如,a,b,c)我想用我自己的标签/标题替换字母(例如,我希望它显示为'Facebook‘,而不是'a’。
发布于 2019-06-27 02:02:25
为保持一致性进行了编辑。
我们可以对计算列使用DataView
,
将值转换为网络名称。
首先,创建一个对象来将值映射到名称。
var socialNetworks = {
a: 'Facebook',
b: 'Instagram',
c: 'LinkedIn'
};
然后,我们从DataTable
创建一个DataView
。
var view = new google.visualization.DataView(data);
然后使用setColumns
方法为转换添加计算列。
我们使用数字的列索引,因为它不会改变。
view.setColumns([{
calc: function (dt, row) {
return socialNetworks[data.getValue(row, 0)];
},
label: 'social',
type: 'string'
}, 1]);
然后使用DataView
绘制图表。
chart.draw(view, options);
完整的代码片段...
var data = google.visualization.arrayToDataTable([
['social', 'number'],
<?php
while($row = mysqli_fetch_array($result))
{
echo "['".$row["a1"]."', ".$row["number"]."],";
}
?>
]);
var options = {
title: 'Which social networks do you use most often?',
//is3D:true,
pieHole: 0.4,
};
var socialNetworks = {
a: 'Facebook',
b: 'Instagram',
c: 'LinkedIn'
};
var view = new google.visualization.DataView(data);
view.setColumns([{
calc: function (dt, row) {
return socialNetworks[data.getValue(row, 0)];
},
label: 'social',
type: 'string'
}, 1]);
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(view, options);
https://stackoverflow.com/questions/56778035
复制相似问题