如何在highcharts中设置动态数据

Posted

技术标签:

【中文标题】如何在highcharts中设置动态数据【英文标题】:how to set dynamic data in highcharts 【发布时间】:2012-07-31 07:14:31 【问题描述】:

我从 servlet 获取数据,我从 servlet 发送的 json 对象的 sysout 是 "jsonArray":["bugzilla":20,"redmind":14]

现在我的 java 脚本是

 <script type="text/javascript">
    var chart;
    $(document).ready(
            function() 
                chart = new Highcharts.Chart(
                    chart : 
                        renderTo : 'container',

                    ,
                    title : 
                        text : 'Bug chart'
                    ,

                    tooltip : 
                        formatter : function() 
                            var s;
                            if (this.point.name)  // the pie chart
                                s = '' + this.point.name + ': ' + this.y
                                        + ' Bugs';
                             else 
                                s = '' + this.x + ': ' + this.y;
                            
                            return s;
                        
                    ,
                    labels : 
                        items : [ 
                            html : 'Total Bugs',
                            style : 
                                left : '40px',
                                top : '8px',
                                color : 'black'
                            
                         ]
                    ,
                    series : [ 

                        type : 'pie',
                        name : 'Total Bugs',
                        data : [],
                        center : [ 100, 80 ],
                        size : 100,
                        showInLegend : false,
                        dataLabels : 
                            enabled : false
                        ,
                    ,  ]

                , function getdata(chart) 
                    var tmp="";
                    var receivedData="";

                    $.ajax(
                        url : 'http://localhost:8080/PRM/GraphServlet',
                        dataType : 'json',
                        error : function() 
                            alert("error occured!!!");
                        ,
                        success : function(data) 

                            $.each(data.jsonArray, function(index)
                                    
                                    $.each(data.jsonArray[index], 
                                        function(key,value) 
                                    tmp = "['" + key + "',  " + value + "],";
                                    receivedData += tmp;
                                    alert("receivedData: " + receivedData);

                                );

                            );
                            alert(receivedData.substring(0, 34));
                            chart.series[0].setData([receivedData.toString().substring(0, 34)]);



                        

                    
                    );
                );

            );
</script>

alert prints receivedData: ['bugzilla', 20],['redmind', 14] 我期待 但问题是当我将其设置为

chart.series[0].setData([receivedData.toString().substring(0, 34)]);

然后我的饼图不工作。它只显示一个部分,例如 1/4 圆圈,没有工具提示

【问题讨论】:

看看这个:***.com/a/7432462/94278 欺骗:***.com/questions/8216090/… @Chris 我得到的值与你现在建议的链接相同 alert() 打印 ["bugzilla", 20],["redmind", 14] 但是无法将变量分配给系列数据 【参考方案1】:

您的数据是一个字符串,它需要是一个数组数组,其中内部数组由两个元素组成,第一个是字符串形式的键,第二个是数字形式的值。

success : function(data) 
   var chartData=[];
   $.each(data.jsonArray, function(index)
    
     $.each(data.jsonArray[index], 
      function(key,value) 
       var point = [];
       point.push(key);
       point.push(value);
       chartData.push(point);                          
      );
   );
   chart.series[0].setData(chartData);
 

【讨论】:

【参考方案2】:

您可以先准备数据,就像上面的@Jugal Thakkar 回答一样,然后使用 v5 中提供的update 函数。

chart.update(
    series: preparedSeriesData
);

这将动态更新图表。

【讨论】:

以上是关于如何在highcharts中设置动态数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableView 中设置动态单元格分隔线? [复制]

如何使用 jquery 和 php 从动态数据中设置默认下拉列表?

如何在 s-s-rS 报告中设置动态轴单位?

如何在 Next.js 中设置多语言环境动态页面的 getStaticPaths

Highcharts:动态设置 y 轴最大值和最小值,而不是在创建时

如何在不使用 %s 的情况下安全、动态地在查询中设置列名?