我可以动态制作 c3js 图表吗?
Can I dynamically make c3js graphs?
这是我目前得到的结果:
<div id="chart"></div>
<script>
var names = <?php echo json_encode($array1) ?>;
var count = <?php echo json_encode($array2) ?>;
var x=0;
while (names[x]!=null)
{
var chart = c3.generate({
padding: {
top: 0,
right: 50,
bottom: 0,
left: 10,
},
data: {
columns: [
['a1', count[x][0]],
['b2', count[x][1]],
['c3', count[x][2]],
['d4', count[x][3]]
],
type: 'pie'
},
});
x=x+1;
}
chart.resize({height:200, width:300})
</script>
所以我现在正在从数据库中提取数据,并将我的数据存储在 php 数组中。然后我把它json给js了,它的js名字现在叫names。 'count' 和 'names 都是相关的,所以循环本身没问题。问题是我不知道如何制作许多饼图,就像我现在正在尝试做的那样。我不太确定我在这里做错了什么,但最后显示的只是一个饼图。
您需要为每个图表生成新的 DOM 元素,因此在此期间您可以:
< script >
var names = <? php echo json_encode($array1) ?> ;
var count = <? php echo json_encode($array2) ?> ;
var x = 0;
while (names[x] != null) {
var iDiv = document.createElement('div');
iDiv.id = 'chart' + x;
document.getElementById('chartsHolder')[0].appendChild(iDiv);
var chart = c3.generate({
bindto = "#chart" + x;
padding: {
top: 0,
right: 50,
bottom: 0,
left: 10,
},
data: {
columns: [
['a1', count[x][0]],
['b2', count[x][1]],
['c3', count[x][2]],
['d4', count[x][3]]
],
type: 'pie'
},
});
x = x + 1;
}
chart.resize({
height: 200,
width: 300
}) < /script>
<div id="chartsHolder"></div>
这是我目前得到的结果:
<div id="chart"></div>
<script>
var names = <?php echo json_encode($array1) ?>;
var count = <?php echo json_encode($array2) ?>;
var x=0;
while (names[x]!=null)
{
var chart = c3.generate({
padding: {
top: 0,
right: 50,
bottom: 0,
left: 10,
},
data: {
columns: [
['a1', count[x][0]],
['b2', count[x][1]],
['c3', count[x][2]],
['d4', count[x][3]]
],
type: 'pie'
},
});
x=x+1;
}
chart.resize({height:200, width:300})
</script>
所以我现在正在从数据库中提取数据,并将我的数据存储在 php 数组中。然后我把它json给js了,它的js名字现在叫names。 'count' 和 'names 都是相关的,所以循环本身没问题。问题是我不知道如何制作许多饼图,就像我现在正在尝试做的那样。我不太确定我在这里做错了什么,但最后显示的只是一个饼图。
您需要为每个图表生成新的 DOM 元素,因此在此期间您可以:
< script >
var names = <? php echo json_encode($array1) ?> ;
var count = <? php echo json_encode($array2) ?> ;
var x = 0;
while (names[x] != null) {
var iDiv = document.createElement('div');
iDiv.id = 'chart' + x;
document.getElementById('chartsHolder')[0].appendChild(iDiv);
var chart = c3.generate({
bindto = "#chart" + x;
padding: {
top: 0,
right: 50,
bottom: 0,
left: 10,
},
data: {
columns: [
['a1', count[x][0]],
['b2', count[x][1]],
['c3', count[x][2]],
['d4', count[x][3]]
],
type: 'pie'
},
});
x = x + 1;
}
chart.resize({
height: 200,
width: 300
}) < /script>
<div id="chartsHolder"></div>