gpt4 book ai didi

javascript - 动态添加到 Highcharts

转载 作者:行者123 更新时间:2023-11-29 17:22:26 24 4
gpt4 key购买 nike

我有一个 json 对象,我正试图将其添加到我的 highcharts 选项中。

我可以通过 API 接收该对象,并将其传递给我的 highcharts 函数,但我无法将我的数据添加到它周围的静态数据中。

        var datas;
datas = getData();
//getdata();

alert('2datass'+datas);
console.log(datas);
createChart(datas);


function createChart(data){

alert('createChart'+data); // works - outputs createChart[object Object][object Object][object Object][object Object][object Object]
var dynamicData;


for(var i =0;i <= data.length-1;i++)
{
var item = data[i];

dynamicData = dynamicData + {
type: 'column',
name: item.name,
data: [item.difference]
};

}

alert('dynamic' +dynamicData); // works, but says undefined before - outputs dynamic undefined[object Object][object Object][object Object][object Object][object Object]



var series = [data /*This is where my data should sit*/,{
type: 'column',
name: 'Jane',
data: [300, 30]
}, {
type: 'column',
name: 'John',
data: [-200, 50]
}, {
type: 'column',
name: 'Joe',
data: [444, -25]
}, {
type: 'column',
name: 'Jobe',
data: [444, -25]
}, {
type: 'column',
name: 'Jooe',
data: [444, -25]
},{
type: 'column',
name: 'Jane',
data: [300, 30]
}
, {
type: 'pie',
name: 'Total consumption',
data: [{
name: 'Jane',
y: 13
//color: '#4572A7' // Jane's color
}, {
name: 'John',
y: 23
//color: '#AA4643' // John's color
}, {
name: 'Joe',
y: 19
//color: '#89A54E' // Joe's color
}],
center: [30, 80],
size: 100,
showInLegend: false,
dataLabels: {
enabled: false
}
}];




var options = {
chart: {
renderTo: 'container'
},
title: {
text: 'Account Managers Leaderboard'
},
xAxis: {
categories: ['Month on Month', 'Day on Day']
},
tooltip: {
formatter: function() {
var s;
if (this.point.name) { // the pie chart
s = ''+
this.point.name +': '+ this.y +' sales';
} else {
s = ''+
this.x +': '+ this.y;
}
return s;
}
},
labels: {
items: [{
html: 'Total proportion of sales <br />this month',
style: {
left: '40px',
top: '-5px',
color: 'black'
}
}]
},
series: series
};

$(document).ready(function() {
var chart;
chart = new Highcharts.Chart(options);
});

}



function getData(){
//alert('ajax');

var receivedData; // store your value here
$.ajax({
type: "GET",
dataType: "json",
url: "API URL",
async: false,
success: function(data){
alert('data'+data); //works
receivedData = data;
}
});

return receivedData;
};

我的解决方案似乎是错误的,因为没有添加动态数据。任何帮助将不胜感激。

更新代码:

 var dynamicData = {
type: 'column',
name: 'FIRST',
data: [300, 30]
};

//Without the following loop, my chart will display the above entry "FIRST"
//With the loop, the chart omits everything in dynamicData
for(var i =0;i <= data.length-1;i++)
{
var item = data[i];

dynamicData = dynamicData + {
type: 'column',
name: item.name,
data: [item.difference]
};

}

alert('dynamic' +dynamicData); // works, but says undefined before - outputs dynamic undefined[object Object][object Object][object Object][object Object][object Object]


//dynamicData should be 'FIRST' and then 5 other returned rows
var series = [dynamicData, {
type: 'column',
name: 'John',
data: [-200, 50]
}, {
type: 'column',
name: 'Joe',
data: [444, -25]
}, {
type: 'column',
name: 'Jobe',
data: [444, -25]
}, {
type: 'column',
name: 'Jooe',
data: [444, -25]
},{
type: 'column',
name: 'Jane',
data: [300, 30]
}
, {
type: 'pie',
name: 'Total consumption',
data: [{
name: 'Jane',
y: 13
//color: '#4572A7' // Jane's color
}, {
name: 'John',
y: 23
//color: '#AA4643' // John's color
}, {
name: 'Joe',
y: 19
//color: '#89A54E' // Joe's color
}],
center: [30, 80],
size: 100,
showInLegend: false,
dataLabels: {
enabled: false
}
}];

修改后的代码,使用 .push:

                // series has been moved straight into the options variable
var options = {
chart: {
renderTo: 'container'
},
title: {
text: 'Account Managers Leaderboard'
},
xAxis: {
categories: ['Month on Month', 'Day on Day']
},
tooltip: {
formatter: function() {
var s;
if (this.point.name) { // the pie chart
s = ''+
this.point.name +': '+ this.y +' sales';
} else {
s = ''+
this.x +': '+ this.y;
}
return s;
}
},
labels: {
items: [{
html: 'Total proportion of sales <br />this month',
style: {
left: '40px',
top: '-5px',
color: 'black'
}
}]
},
series: [{
type: 'pie',
name: 'Total consumption',
data: [{
name: 'Jane',
y: 13
//color: '#4572A7' // Jane's color
}, {
name: 'John',
y: 23
//color: '#AA4643' // John's color
}, {
name: 'Joe',
y: 19
//color: '#89A54E' // Joe's color
}],
center: [30, 80],
size: 100,
showInLegend: false,
dataLabels: {
enabled: false
}
}]
};


//I can now push data straight to seriese (although item.difference doesn't
// work .. perhaps because it's an array)

for(var i =0;i <= data.length-1;i++)
{
var item = data[i];

options.series.push({
"type": "column",
"name": item.name,
"data": item.data
});
alert('datavalue' +item.data);
}


$(document).ready(function() {
var chart;
chart = new Highcharts.Chart(options);
});

回答!

这似乎可以解决问题。感谢 Speransky Danil 与我一起奋斗 - 非常感谢。

        var datas;
datas = getData();
createChart(datas);


function createChart(data){

var options = {
chart: {
renderTo: 'container'
},
title: {
text: 'Account Managers Leaderboard'
},
xAxis: {
categories: ['Month on Month', 'Day on Day']
},
tooltip: {
formatter: function() {
var s;
if (this.point.name) { // the pie chart
s = ''+
this.point.name +': '+ this.y +' sales';
} else {
s = ''+
this.x +': '+ this.y;
}
return s;
}
},
labels: {
items: [{
html: 'Total proportion of sales <br />this month',
style: {
left: '40px',
top: '-5px',
color: 'black'
}
}]
},
series: [{
type: 'pie',
name: 'Total consumption',
data: [{
name: 'Jane',
y: 13
//color: '#4572A7' // Jane's color
}, {
name: 'John',
y: 23
//color: '#AA4643' // John's color
}, {
name: 'Joe',
y: 19
//color: '#89A54E' // Joe's color
}],
center: [30, 80],
size: 100,
showInLegend: false,
dataLabels: {
enabled: false
}
}]
};




for(var i =0;i <= data.length-1;i++)
{
var item = data[i];

options.series.push({
"type": "column",
"name": item.name,
"data": [item.data]
});

}



















$(document).ready(function() {
var chart;
chart = new Highcharts.Chart(options);
});

}



function getData(){
//alert('ajax');

var receivedData; // store your value here
$.ajax({
type: "GET",
dataType: "json",
url: "API URL",
async: false,
success: function(data){
alert('data'+data); //works
receivedData = data;
}
});

return receivedData;
};

最佳答案

问题出在包含以下内容的循环中:

dynamicData = dynamicData + {
type: 'column',
name: item.name,
data: [item.difference]
};

第一次 dynamicDataundefined。当我们对 undefinedObject 求和时,我们将它们都转换为 string 并连接它,所以你得到字符串 'undefined'[object Object]',然后是'undefined[object Object][object Object]'等等(转换成string对象就是' [对象对象]')

关于javascript - 动态添加到 Highcharts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com