Javascript 循环查看amcharts堆叠柱形图的每个对象属性
您好,我正在使用ajax获取php mysql数据并将其显示到amcharts堆叠柱形图中,但由于我正在处理堆叠柱形图,因此我需要单独定义每个标题和值字段以生成图表的每个系列 这是我的JSFIDLE: 是否有一种方法可以循环遍历每个属性名称?要生成这样的输出,而不是手动插入它们Javascript 循环查看amcharts堆叠柱形图的每个对象属性,javascript,jquery,amcharts,Javascript,Jquery,Amcharts,您好,我正在使用ajax获取php mysql数据并将其显示到amcharts堆叠柱形图中,但由于我正在处理堆叠柱形图,因此我需要单独定义每个标题和值字段以生成图表的每个系列 这是我的JSFIDLE: 是否有一种方法可以循环遍历每个属性名称?要生成这样的输出,而不是手动插入它们 { "numberFormatter": { "precision": 2, "decimalSeparator": ".", "thou
{
"numberFormatter": {
"precision": 2,
"decimalSeparator": ".",
"thousandsSeparator": ","
},
"fillAlphas": 0.8,
"labelText": "[[title]]<br>" + "[[value]]",
"labelPosition": "middle",
"lineAlpha": 0.3,
"title": "MAN",
"type": "column",
"color": "#000000",
"valueField": "MAN"
}, {
"numberFormatter": {
"precision": 2,
"decimalSeparator": ".",
"thousandsSeparator": ","
},
"fillAlphas": 0.8,
"labelText":"[[title]]<br>" + "[[value]]",
"labelPosition": "middle",
"lineAlpha": 0.3,
"title": "PAN",
"type": "column",
"color": "#000000",
"valueField": "PAN"
},
{
"numberFormatter": {
"precision": 2,
"decimalSeparator": ".",
"thousandsSeparator": ","
},
"fillAlphas": 0.8,
"labelText":"[[title]]<br>" + "[[value]]",
"labelPosition": "middle",
"lineAlpha": 0.3,
"title": "DAV",
"type": "column",
"color": "#000000",
"valueField": "DAV"
}
{
“数字格式”:{
"精确":二,,
“小数分隔符”:“,
“千分位”:“
},
“填充字母”:0.8,
“标签文本”:“[[title]]
”+“[[value]]”,
“标签位置”:“中间”,
“lineAlpha”:0.3,
“头衔”:“男人”,
“类型”:“列”,
“颜色”:“000000”,
“价值场”:“人”
}, {
“数字格式”:{
"精确":二,,
“小数分隔符”:“,
“千分位”:“
},
“填充字母”:0.8,
“标签文本”:“[[title]]
”+“[[value]]”,
“标签位置”:“中间”,
“lineAlpha”:0.3,
“标题”:“潘”,
“类型”:“列”,
“颜色”:“000000”,
“valueField”:“PAN”
},
{
“数字格式”:{
"精确":二,,
“小数分隔符”:“,
“千分位”:“
},
“填充字母”:0.8,
“标签文本”:“[[title]]
”+“[[value]]”,
“标签位置”:“中间”,
“lineAlpha”:0.3,
“标题”:“DAV”,
“类型”:“列”,
“颜色”:“000000”,
“valueField”:“DAV”
}
您可以定义一个模板,该模板具有所有不更改的所需图形设置属性,然后使用数据中的其他属性动态创建图形数组,并在运行时设置其他字段。由于您很可能知道您的categoryField将在前面是什么,因此您可以简单地循环响应的第一个数组元素中的其余属性,并设置您的title和valueField,因为它们是唯一正在更改的值
假设您的categoryField始终为name
:
var graphs = Object.keys(response[0]).reduce(function(graphsArray, key) {
if (key !== "name") {
graphsArray.push({
"fillAlphas": 0.8,
"labelText": "[[title]]<br>" + "[[value]]",
"labelPosition": "middle",
"lineAlpha": 0.3,
"title": key,
"type": "column",
"color": "#000000",
//"showAllValueLabels": true,
"valueField": key
});
}
return graphsArray;
}, []);
// ...
var AmCharts.makeChart("chartdiv", {
// ...
"graphs": graphs,
// ...
});
var graphs=Object.keys(响应[0]).reduce(函数(graphsArray,key){
如果(键!=“名称”){
graphsArray.push({
“填充字母”:0.8,
“标签文本”:“[[title]]
”+“[[value]]”,
“标签位置”:“中间”,
“lineAlpha”:0.3,
“标题”:关键,
“类型”:“列”,
“颜色”:“000000”,
//“showAllValueLabels”:正确,
“valueField”:键
});
}
返回图形数组;
}, []);
// ...
var AmCharts.makeChart(“chartdiv”{
// ...
“图形”:图形,
// ...
});
(请注意,numberFormatter
不是图形级属性,而是顶级图表对象属性)
更新的fiddle:您能解释一下您在这里发布的对象与您的JSFIDLE中硬编码的对象之间的区别吗?你想把什么转换成什么?抱歉搞混了。我想循环到每个属性名,以生成图形下的输出。因为我现在是手工做的