与xaxis匹配特定系列点(yaxis)的Highcharts?

时间:2015-10-10 10:05:16

标签: jquery xml highcharts

我有一个XML,其中包含x轴中的“日期”和样条线系列的数据点。 xaxis:包含当前日期的最后一年日期(仅限市场日),表示一年250天。 系列:每个日期250点

新:(我删除了所有<samples> 0) 现在datessample的数字不均匀。我可以绘制这些数据吗?

我的XML: <categories> <dates>2014-10-10</dates> ......... <dates>2015-10-10</dates> </categories> <series> <name>Apples</name> <data> <sample>67</sample> .... </data> </series> <series> <name>Mangoes</name> <data> <sample>10</sample> <sample>67</sample> .... </data> </series>

OLD:

我的XML: <categories> <dates>2014-10-10</dates> ......... <dates>2015-10-10</dates> </categories> <series> <name>Apples</name> <data> <sample>0</sample> <sample>0</sample> <sample>67</sample> .... </data> </series> <series> <name>Mangoes</name> <data> <sample>10</sample> <sample>0</sample > <sample>67</sample> .... </data> </series>

我的JQuery:

$xml.find("dates").each (function(i,cat){ options.xAxis.categories.push($(cat).text()); }); $xml.find('series').each (function(i,series){ var s = { name : $ (series).find('name').text(), data: [] } $(series).find('data sample').each (function(i,sample){ s.data.push($(sample).text()); }); }); options.series.push(s); 我将每个样本分成不同的系列,因此每个系列的第一个样本与第一个

匹配

日期。 现在我必须从所有系列的'sample'中仅收集非零值来绘制

反对相应的日期。 那可能吗?请指导我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在设置系列后(在选项对象中)执行此操作。

一开始你应该通过ie $ .each()函数迭代你拥有的所有类别。

$.each(options.xAxis.categories, function(i, cat){}

在此函数内部创建一个容器,用于存储具有实际类别索引索引的所有系列数据的总和。然后使用each()迭代所有系列,并添加实际索引上的每个数据值。

$.each(options.xAxis.categories, function(i, cat){
        sum=0;
        $.each(options.series, function(j,data){
            sum+=data.data[i];
        });

检查sum是否等于0.在true上使用splice(index,1)删除实际索引上的类别,其中索引均值索引开始拼接,1表示拼接单元格数。同时使用each()迭代所有序列,并使用splice(index,1)删除索引上的每个数据单元。

if(x===0){
            options.xAxis.categories.splice(i,1);
            $.each(options.series, function(j,data){
                data.data.splice(i,1);
            });
        }

所有代码如下所示:

 var x;
$.each(options.xAxis.categories, function(i, cat){
        x=0;
        $.each(options.series, function(j,data){
            x+=data.data[i];
        });
        if(x===0){
            options.xAxis.categories.splice(i,1);
            $.each(options.series, function(j,data){
                data.data.splice(i,1);
            });
        }
});

实施例: http://jsfiddle.net/izothep/x6rmtyhv/