2013-02-25 63 views
4

我面臨一個問題,我不確定它是否是Highcharts插件中的錯誤或編程錯誤。懸停標記在斷開連接的圖上丟失

我使用空值繪製一個只有一個serie的斷開線圖,但它似乎是懸停標記的問題:它們中的一些(在第一行的頂部和第二行的底部)看起來似乎不出現。代碼很簡單,但我找不到會造成這種情況的原因。

下面是一個爲例再現該問題:http://jsfiddle.net/KYXQS/9/(更新26/02)

而這裏的代碼(更新26/02):

$(function() { 
var chart; 
$(document).ready(function() { 
    chart = new Highcharts.Chart({ 
     chart: { 
      renderTo: 'container', 
      type: 'line', 
      marginRight: 130, 
      marginBottom: 25, 
      zoomType: 'xy' 
     }, 
     title: { 
      text: 'Monthly Average Temperature', 
      x: -20 //center 
     }, 
     subtitle: { 
      text: 'Source: WorldClimate.com', 
      x: -20 
     }, 
     tooltip: { 
      formatter: function() { 
        return '<b>'+ this.series.name +'</b><br/>'+ 
        this.x +': '+ this.y +'°C'; 
      } 
     }, 
     plotOptions : 
     { 
      line : { 
       marker : 
       { 
        enabled: false, 
       } 
      } 
     }, 
     legend: { 
      layout: 'vertical', 
      align: 'right', 
      verticalAlign: 'top', 
      x: -10, 
      y: 100, 
      borderWidth: 0 
     }, 
     series: [{ 
      name: 'Red', 
      data: [[0,0],[1,1],[2,2] 
        ,null 
        ,[4,4],[5,5],[6,6] 

        ,null 
        ,[2,0],[3,1],[4,2] 
        ,null 
        ,[6,4],[7,5],[8,6] 

        ,null 
        ,[12,0],[13,1],[14,2] 
        ,null 
        ,[16,4],[17,5],[18,6] 

        ,null 
        ,[22,0],[23,1],[24,2] 
        ,null 
        ,[26,4],[27,5],[28,6] 

        ,null 
        ,[32,0],[33,1],[34,2] 
        ,null 
        ,[36,4],[37,5],[38,6] 

        ,null 
        ,[34,0],[35,1],[36,2] 
        ,null 
        ,[38,4],[39,5],[40,6] 

        ,null 
        ,[36,0],[37,1],[38,2] 
        ,null 
        ,[40,4],[41,5],[42,6] 

        ,null 
        ,[40,2],[41,2],[42,3] 
        ,null 
        ,[47,8],[48,10],[49,11] 
        ], 
      color: 'red' 
     } 
     ,{ 
      name: 'Blue', 
      data: [[2,2],[3,3],[4,4] 
        ,null 
        ,[8,8],[9,10],[10,12] 

        ,null 
        ,[4,2],[5,3],[6,4] 
        ,null 
        ,[10,8],[11,10],[12,12] 

        ,null 
        ,[14,2],[15,3],[16,4] 
        ,null 
        ,[20,8],[21,10],[22,12] 

        ,null 
        ,[24,2],[25,3],[26,4] 
        ,null 
        ,[30,8],[31,10],[32,12] 

        ,null 
        ,[34,2],[35,3],[36,4] 
        ,null 
        ,[40,8],[41,10],[42,12] 

        ,null 
        ,[36,2],[37,3],[38,4] 
        ,null 
        ,[42,8],[43,10],[44,12] 

        ,null 
        ,[38,2],[39,3],[40,4] 
        ,null 
        ,[44,8],[45,10],[46,12] 

        ,null 
        ,[42,3],[41,3],[42,4] 
        ,null 
        ,[49,11],[52,12],[53,12] 
        ], 
      color: 'blue' 
     } 
     ,{ 
      name: 'Green', 
      data: [[6,6],[7,7],[8,8] 
        ,null 
        ,[10,12],[11,15],[12,19] 

        ,null 
        ,[8,6],[9,7],[10,8] 
        ,null 
        ,[12,12],[13,15],[14,19] 

        ,null 
        ,[8,6],[9,7],[10,8] 
        ,null 
        ,[12,12],[13,15],[14,19] 

        ,null 
        ,[18,6],[19,7],[20,8] 
        ,null 
        ,[22,12],[23,15],[24,19] 

        ,null 
        ,[28,6],[29,7],[30,8] 
        ,null 
        ,[32,12],[33,15],[34,19] 

        ,null 
        ,[38,6],[39,7],[40,8] 
        ,null 
        ,[42,12],[43,15],[44,19] 

        ,null 
        ,[40,6],[41,7],[42,8] 
        ,null 
        ,[44,12],[45,15],[46,19] 

        ,null 
        ,[42,6],[43,7],[44,8] 
        ,null 
        ,[46,12],[47,15],[48,19] 

        ,null 
        ,[42,4],[45,5],[47,8] 
        ,null 
        ,[53,12],[54,13],[55,14] 
        ], 
      color: 'green' 
     }] 
    }); 
}); 

});

有關如何使這些標記重新出現的任何想法?

在此先感謝。

更新26/02:
我一直在測試其他情況,以確定這個問題的原因,這裏是我發現了什麼:
- 當線條太接近對方時發生該問題(上xAxis)
- 縮放並沒有幫助,即使是放大了標記應該出現的地方也沒有出現。 舉一個例子,你可以看到錯誤試圖徘徊在[47,15]綠色系列點時: -
每當y的值都相同或不

UPDATE 25/04出現問題。而不是[47,15]點,它是「徘徊」的[47,8]點,無論我嘗試什麼(如完全放大),我都不能「懸停」[47,15]點。

我已經更新了jsfiddle鏈接和上面的代碼,以更多的例子來說明問題。

任何人有任何想法解決這個問題?

+0

實際上,第一行繪製的整個上半部分不起作用。你有沒有嘗試刪除其他座標,現在只畫一條線。確保這些方法有效,然後再進入兩個? – christopher 2013-02-25 15:08:33

+0

是的,只用一行就可以正常工作。當您通過使用'空值'添加第二行時,問題就出現了。 – DiOldDisplay 2013-02-26 07:18:36

回答

1

的問題是,在Highcharts一個系列數據應該X軸進行排序上升,而你的系列都沒有。排序你的數據,並應該工作。

+0

您可能是錯誤的起源,但不幸的是,排序數據不是一種選擇,它將徹底改變圖表的方面,因爲數據被「空值」分隔以便用單個系列繪製分隔的段。對於一個簡單的例子,這就是它必須看起來像http://jsfiddle.net/6jdMZ/(你可以注意到更高點上的錯誤),使用排序數據它看起來像這樣http://jsfiddle.net/6jdMZ/1 /嘗試將點[6,4]懸停,這是不可能的。這當然是一個很好的領先,但是有沒有一種解決方法可以保持圖表的方面? – DiOldDisplay 2013-04-26 20:18:34

+2

你仍然可以將這一系列分成三個不同的,所有鏈接到一個傳說項目,看看:http://jsfiddle.net/6jdMZ/3/ linkedTo在3.0版本中引入 – 2013-04-29 10:59:03

+0

我實現了這個我的項目和它很棒!非常感謝您解決我的問題。 – DiOldDisplay 2013-05-13 08:52:08

0

我會假設你實際上並沒有談論標誌,因爲這些被設置爲

plotOptions: { 行:{ 標記: { 啓用:假的, }} } ,

在你的例子中。如果您想顯示標記,則需要將其更改爲啓用:true。

您可能正在討論工具提示。

你需要做的是改變你的代碼:

tooltip: { 
    shared: true, 
    formatter: function() { 
     var s = '<b>' + this.x + '</b>'; 

     $.each(this.points, function (i, point) { 
      s += '<br/>' + point.series.name + ': ' + point.y + 'm'; 
     }); 

     return s; 
    }, 
}, 

看到這些文檔條目和小提琴:

http://api.highcharts.com/highcharts#tooltip.shared

http://api.highcharts.com/highcharts#tooltip.formatter

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/tooltip/formatter-shared/

+0

感謝您的回覆,但那不是我正在尋找的。 這確實是標記問題。如果你看看我發佈的jsfiddle(http://jsfiddle.net/KYXQS/1/),你會注意到標記確實被禁用了,但懸停標記仍然被啓用(如工具提示)。 所以,這裏的問題是,並非所有的懸停標記似乎都起作用,特別是在第一行的頂部。我想知道什麼可能導致這些標記不出現。 – DiOldDisplay 2013-02-26 07:16:20

0

的Bug我都不n highcharts,也不在你的程序中。問題在於某些標記隱藏在其他標記之後。 查看http://jsfiddle.net/msjaiswal/KYXQS/10/ 您會注意到,在綠色和藍色線條的連接點上,藍色標記隱藏在綠色標記的後面。嘗試從圖例中取消選擇綠色系列,並顯示隱藏的藍色標記。

啓用圖表選項標記是這樣的:

  line : { 
       marker : 
       { 
        enabled: true, 
       } 
      } 
+0

我想你在這裏誤解了這個問題。錯誤是有些懸停標記的工具提示沒有出現。 有關JSFIDDLE的更清晰示例:http://jsfiddle.net/msjaiswal/KYXQS/10/ 試着將標記懸停在大約x = 45和y = 15的綠色系列上。您會注意到顯示的工具提示和「懸停的標記」(標記的懸停尺寸較大)不是正確的。 如果我不夠清楚,請原諒我。 – DiOldDisplay 2013-04-25 11:51:07

+0

是的,我明白你的觀點並看到問題所在。我同意帕維爾的解決方案,即一系列中的所有點應該根據x軸排序。但在你的情況下,排序不是一種選擇。因此,使用多個序列,每個序列都有排序的x座標,它們全部具有相同的顏色,n-1系列的「linkedTo」最後一個序列應該完美地解決問題。 – 2013-04-29 18:29:35