2012-09-05 84 views
2
前一天

我實現了在所示HighStock圖表:Highstock系列比較要

http://www.highcharts.com/stock/demo/compare

這個圖表顯示從第一百分比變化,或最左邊,數據點。我有一些股票分析師告訴我這並沒有多大用處,他們寧願看到前一個數據點的百分比變化,換句話說,如果我在圖表上查看「今天」,我會希望看到從昨天開始的百分比變化。我查看了highstock API,我似乎無法找到一種方法來定義百分比變化函數。有沒有適當的方法讓高爐做到這一點,或者我應該使用高圖線圖來實現這一點?

+0

你嘗試過什麼?只是一個暗示,你必須自己去做,將關注點與工具提示格式化程序中的最後一個進行比較。 –

+0

這不僅僅是工具提示格式化程序的問題。如果我只更改了工具提示格式器,那麼工具提示會顯示與圖表本身不同的數據,因爲圖表本身仍然會繪製第一點的百分比變化。 –

+0

因此,它看起來像將錯誤的數據傳遞給高層圖表,對吧?我認爲您需要在後端處理圖表數據,然後將其傳遞到前端,在那裏進行渲染。 –

回答

5

以前我不得不在高地圖上做類似的事情。我想從一個數據點到下一個數據點的實際變化。

我所做的是我看看當前點(this.x),我發現它在系列數組中的位置。從那裏,我很容易找到前一個點的索引(index = a - 1)並進行數學運算。希望這有助於:)

編輯:

調查了stockcharts API和想通了該產品:

tooltip: { 
    formatter: function() { 
     var s = '<b>'+ Highcharts.dateFormat('%A, %b %e, %Y', this.x) +'</b><br>'; 

     $.each(this.points, function(i, point) { 


      s += '<span style="font-weight: bold; font-size: 1.2em; color: ' + point.point.series.color + ';">' + point.point.series.name + '</span>:<span style="font-weight: bold; font-size: 1.2em;">' + point.y + '</span>' ; 
      s += '<span style="font-size: .8em;">'; 

      var target = this.x; 

      index = 0; 
      for (var a = 0; a < point.series.points.length; a++) { 
       if (point.series.points[a].x == target) 
       { 
        index = a - 1; 
       } 
      } 
      var delta = 0; 
      var change = 0; 
      if (index >= 0) 
      { 
       delta = this.y - point.series.points[index].y; 
       change = (delta/point.series.points[index].y) * 100; 
      } 
      s += Math.round(change,2) + '%</span>'; 


      s +='</span><br>'; 

     }); 


     return s; 
    } 
}, 

和工作的jsfiddle:http://jsfiddle.net/nLjsc/2/

+0

感謝您的努力,但在此變體中,圖形和工具提示不顯示相同的數據。工具提示顯示的是昨天的百分比變化,而Y軸和線條本身顯示的是從第0點開始的百分比變化。 –

+0

嗯..我想你應該只限制你查看最後一個數據點的範圍。當你改變y軸上的標籤變化的範圍改變爲反射範圍的%變化。將其限制爲一天,也許幾天,你會更準確地看到它的反射。 – Robodude