2017-03-14 25 views
0

點當highstock圖表的數據集中在同一軸線上的前多點:Highstock一步多個數據在同一x軸

data: [[0,0], [0, 100], [1, 100], [1,200], [4, 100], [4, 200]] 

點不總是選擇默認的最高數字。它看起來像隨機選擇同一軸上的一個數字。

這裏是我的小提琴手例如:http://jsfiddle.net/ceo1y97m/

正如你可以看到當你將鼠標懸停在不同的點,它並不總是顯示最高點的Y值。我如何得到這個只顯示最高點的價值?

編輯:這是我有多個x值是相同的原因:

比方說,這條線代表的錢,你存入一個賬戶上的時間量。在該行的圖例中,我想顯示您在查看期間存入的金額。這將是最右點的Y值減去最左點的Y值。如果我不包含重複的Y值,則此計算不正確。

見更新小提琴手上顯示圖例值這個錯誤(放大和縮小來改變圖例值):https://jsfiddle.net/LS384/822/

兩組數據看起來一樣,但傳說值是不同的,因爲這兩個點上不顯示相同的軸。

+0

同意Liviu Boboia答案。爲什麼你需要這些附加點? – morganfree

+0

我有一個額外的要求來計算最右邊和最左邊的點之間的差異(以查看隨時間變化的值)。看到我對Liviu的帖子的評論。 – Pierre

回答

1

我會處理的數據,所以你有一個點每個值附加信息 - 多個值。我將{ x, y }作爲有關點應如何可視化的信息,並將數組添加到允許進行正確計算的所有附加值。

此:

[ 
    [0, 0], 
    [0, 100], 
    [1, 100], 
    [1, 200], 
    [1, 300], 

變成這樣:

[{ 
    x: 0, 
    y: 100, 
    values: [0, 100] 
}, { 
    x: 1, 
    y: 300, 
    values: [100, 200, 300] 
}] 

隨着定義爲以上點,可以通過point.options.values訪問值,並計算差值。

示例:http://jsfiddle.net/jqdh79vv/

+0

天才,謝謝! – Pierre

2

我不確定這是如何使用步驟圖表,每個軸點應該只有1個值。 你可以做的是篩選數據以只保留最高值爲每個點

data: [[0,0], [0, 100], [1, 100], [1,200], [4, 100], [4, 200]] 

for (var i in data) { 
    if (filteredData[data[i][0]] == undefined) { 
     filteredData[data[i][0]] = data[i] 
    } else { 
     if (filteredData[data[i][0]][1] < data[i][1]) { 
     filteredData[data[i][0]] = data[i]; 
     } 
    } 
} 

這裏是你編輯的過濾器與圖看,同樣的,你期望的行爲http://jsfiddle.net/ceo1y97m/4/

編輯:

我做了一個解決方法,我隱藏未過濾的數據,使用過濾的數據進行顯示,並給它與未過濾的數據相同的顏色,並在計算差異的函數中使用未過濾的數據(ch.series [0])。數據])

這裏是您的預期行爲提琴https://jsfiddle.net/LS384/826/

+0

查看更新的問題,爲什麼要求每個軸點超過1個值。 – Pierre

相關問題