2015-10-10 52 views
0

我有一個XML,其中包含xaxis中的「日期」和樣條線系列的數據點。 xaxis:包含當前日期的最後一年的日期,(僅市場日),一年250天。 系列:250分,每日期Highcharts與xaxis匹配特定系列點(yaxis)?

新:(這裏我刪除了所有我<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); 我將每個樣品分成單獨的系列,因此每個系列的第一個樣品與第一個

日期匹配。 現在我只需要從所有系列的「樣本」中收集非零值,並根據相應的日期繪製

。 這可能嗎?請指導我。提前致謝。

+0

否則我將能夠使與情節的系列 '0' 爲透明? – Disera

+0

所以你想隱藏所有系列中零值的所有點? –

+0

是的,確切地說。我不希望該系列將值與零點連接。如果系列斷開連接就沒關係。提前致謝。 – Disera

回答

1

您可以在設置系列(選項對象)後執行此操作。

在開始時,您應該遍歷所有類別,例如$ .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]; 
     }); 

檢查總和是通過使用拼接等於0。真正刪除類別實際指數(指數,1),其中索引意味着索引你開始剪接和1表示剪接的細胞數。還要用each()遍歷所有系列,並用拼接(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/

+0

可以請你用我更新的XML指導我。我已經從xml中刪除了所有'0'元素。現在可以將「樣本」與「日期」進行比較。我非常感謝你的時間和幫助。 – Disera

+0

那麼我爲以前的XML開發了一個簡單的解析器,當您修改XML時,每個解析器都需要驗證並修改解析器。 –

+0

謝謝!但問題仍然存在。零的仍然被繪製。這就是爲什麼我從XML中刪除'0'並嘗試。但是,沒有運氣。你可以請建議任何解決方案。 – Disera