我正在尝试使用从.NET控制器返回的JSON构建Highchart。数据的格式如下(在控制器中):
var data = new
{
sentiment = new[]
{
new { value = "Positive", data = positiveScore.ToString() },
new { value = "Negative", data = negativeScore.ToString() },
new { value = "Neutral", data = neutralScore.ToString() }
}
};
return Json(data, JsonRequestBehavior.AllowGet);
我收到的数据如下:
我的Highchart按以下方式构建:
function sentimentAnalysisData(data)
//$(document).ready(function ()
{
var chart = new Highcharts.Chart({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie',
renderTo: 'highchart'
},
title: {
text: 'Sentiment Analysis'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
}
}
},
series: [{data}]
//});
})
};
传递给我的函数的data
参数实际上是您在我提供的图像中可以看到的数据。我通过ajax调用获得了一个GET请求,在那里我检索了数据,然后,在“on success”回调中,我正在调用这个函数来构建图表。
我的问题如下:生成Highchart,我可以在我的前端看到它,但由于我的数据以错误的方式传递到series
字段,因此图表主体实际上是空的,没有数据显示。我试图在途中生成它,我也试图遍历对象,在两个数组中解析它并使用那些数组(一个用于描述字符串,一个用于值)但我遗漏了一些东西。有用的想法吗?
答案 0 :(得分:1)
我能够通过以下方式解决我的问题:
我改变了构建JSON的方式,以匹配饼图结构,其中我有一个名称和一个值部分(名称部分必须注明为&#34; name&#34;,并且值为&#34; Y&#34)
var data = new[]
{
new { name = "Positive", y = positiveScore },
new { name = "Negative", y = negativeScore },
new { name = "Neutral" , y = neutralScore }
};
return Json(data, JsonRequestBehavior.AllowGet);
通过这种方式,我得到了我正在寻找的确切结构。此外,我从y中删除了.toString()
,因为Highchart需要一个数值,而不是一个字符串。如果省略此部分,则会收到以下错误:
发送到series.data的字符串值,期望如果你发生了他的号码 传入一个字符串作为数据点