2013-02-18 109 views
3

我想在测量带上有工具提示或传说。我画了这样的乐队:如何在plotBand上显示工具提示或图例?

plotBands: [{ 
       from: 0, 
       to: 10, 
       color: '#55BF3B' 
      }, { 
       from: 10, 
       to: 20, 
       color: '#DDDF0D' 
      }] 

我想看看mouseover上的工具提示乐队。

或者我想要的另一个解决方案是用关于颜色来显示每个乐队的传说。有传言的选项,但不适用于乐队。

对于plotBands有没有类似showInLegend:true的选项?或者任何其他解决方案来获得这些?

+2

尝试此链接:http://stackoverflow.com/questions/10225896/highchart-tolltip-for-legends – Pandian 2013-02-18 11:45:28

+0

@Pandian这不是我想看到 – gencay 2013-02-18 12:34:35

回答

1

一般情况下,plotBands没有任何工具提示或图例选项,但是可以向plotBand添加一些自定义事件,例如mouseover。请参阅:http://api.highcharts.com/highcharts#xAxis.plotBands.events

因此,您可以为此创建自己的工具提示。

+0

感谢什么答案。你会建议如何在传奇中添加带有颜色和标签的乐队? – gencay 2013-02-18 14:48:24

+1

可能唯一的两个选择是使用固定的最小/最大或假系列图例(无点)的区域系列,并管理legendItemClick通过删除它来隐藏plotBand。 – 2013-02-19 12:25:37

0

由于它是(例如)不可能,所以你可以在图表下面放置一个subtitle(在我的情况下,一个表)。例如:

subtitle: { 
    text: '<span style="background-color: #55BF3B; border-radius: 2px; padding: 1px 2px;">' + 
       '0-10' + 
      '</span>' + 
      '<span style="background-color: #DDDF0D; border-radius: 2px; padding: 1px 2px;">' + 
       '10-20' + 
      '</span>', 
    useHTML: true, 
    verticalAlign: 'bottom' 
} 
0

通过将文本附加到由Highcharts生成的svg路径元素,实际上可以为标准绘图条制作相当优雅的标签。通过这样做,您可以获得实际遵循情节带曲线的文本。仔细查看量表初始化后触发的匿名函数中的代码。您需要获取正确的plotband对象,为path元素分配一个id属性,然后插入text和textPath元素(使用createElementNS)。然后使用xlink命名空间链接新创建的textPath元素。在我的示例中,我正在应用标尺作为标尺周围的标绘带显示的四分位数。

例子:

$(selector).highcharts({ 
      chart: { 
       type: 'gauge', 
       plotBackgroundColor: null, 
       plotBackgroundImage: null, 
       plotBorderWidth: 0, 
       plotShadow: false 
      }, 
      title: { 
       //oConfig is my own config object 
       text: oConfig.TITLE, 
       style: {"color": "#333333", "fontSize": fontSize, "font-family": "Arial", "font-weight": "bold"} 
      }, 
      pane: { 
       size: "100%", 
       startAngle: -150, 
       endAngle: 150, 
       background: [{ 
        backgroundColor: '#FFF', 
        borderWidth: 0, 
        outerRadius: '100%', 
        innerRadius: '100%' 
       }] 
      }, 
      /*the value axis*/ 
      yAxis: [{ 
       min: oConfig.MIN, 
       max: oConfig.MAX, 
       minorTickInterval: 'auto', 
       minorTickWidth: 0, 
       minorTickLength: 10, 
       minorTickPosition: 'inside', 
       minorTickColor: '#666', 
       tickPixelInterval: 30, 
       tickWidth: 2, 
       tickPosition: 'inside', 
       tickLength: 10, 
       tickColor: '#666', 
       labels: { 
        step: 2, 
        rotation: 'auto' 
       }, 
       title: { 
        text: null 
       }, 
       plotBands: [{ 
        from: oConfig.PB1FROM, 
        to: oConfig.PB1TO, 
        color: 'red', 
        outerRadius: "105%", 
        //innerRadius: "10%", 
        thickness : "5%" 
       }, { 
        from: oConfig.PB2FROM, 
        to: oConfig.PB2TO, 
        color: '#fdd01b', 
        outerRadius: "105%", 
        //innerRadius: "10%", 
        thickness : "5%" 
       }, { 
        from: oConfig.PB3FROM, 
        to: oConfig.PB3TO, 
        color: 'green', 
        outerRadius: "105%", 
        //innerRadius: "10%", 
        thickness : "5%" 
       }] 
      }], 
       credits: { 
        enabled: false 
       }, 
      series: [{ 
       name: name, 
       data: []/*, 
       tooltip: { 
         valuePrefix: 'Score: ', 
        valueSuffix: ' out of 5' 
       }*/ 
      }] 
     }, 
     //Add some life 
     function (chart) { 
      var svgNS = "http://www.w3.org/2000/svg"; 
      var xlinkNS = "http://www.w3.org/1999/xlink"; 
      //I create a random id using my own helpers.makeid() method - you'll need to roll your own 
      var id = helpers.makeid(); 

      //quartile 1 
      var elem = chart.yAxis[0].plotLinesAndBands[1].svgElem.element; 
      elem.setAttribute("id", id); 
      var newText = document.createElementNS(svgNS,"text"); 
      newText.setAttributeNS(null,"font-family","Verdana"); 
      newText.setAttributeNS(null,"font-weight","bold"); 
      newText.setAttributeNS(null,"font-size","10"); 
      newText.setAttributeNS(null,"dy","-5"); 
      newText.setAttributeNS(null,"fill","red"); 
      var newTextPath = document.createElementNS(svgNS, "textPath"); 
      newTextPath.setAttributeNS(null,"startOffset","10%"); 
      newTextPath.setAttributeNS(xlinkNS, "xlink:href", "#"+id); 
      var textNode = document.createTextNode("Quartile 1 (0% to 25%)"); 
      newTextPath.appendChild(textNode); 
      newText.appendChild(newTextPath); 
      elem.parentNode.insertBefore(newText, elem.nextSibling); 

      //interquartile range (middle 50) 
      var elem2 = chart.yAxis[0].plotLinesAndBands[2].svgElem.element; 
      id = helpers.makeid(); 
      elem2.setAttribute("id", id); 
      var newText = document.createElementNS(svgNS,"text"); 
      newText.setAttributeNS(null,"font-family","Verdana"); 
      newText.setAttributeNS(null,"font-weight","bold"); 
      newText.setAttributeNS(null,"font-size","10"); 
      newText.setAttributeNS(null,"dy","-5"); 
      newText.setAttributeNS(null,"fill","#fdd01b"); 
      newText.setAttributeNS(null,"x", 5); 
      newText.setAttributeNS(null,"y", 5); 
      var newTextPath = document.createElementNS(svgNS, "textPath"); 
      newTextPath.setAttributeNS(null,"startOffset","10%"); 
      newTextPath.setAttributeNS(xlinkNS, "xlink:href", "#"+id); 
      var textNode = document.createTextNode("Middle 50 (25% to 75%)"); 
      newTextPath.appendChild(textNode); 
      newText.appendChild(newTextPath); 
      elem.parentNode.insertBefore(newText, elem.nextSibling); 

      //quartile 3 
      var elem3 = chart.yAxis[0].plotLinesAndBands[3].svgElem.element; 
      id = helpers.makeid(); 
      elem3.setAttribute("id", id); 
      var newText = document.createElementNS(svgNS,"text"); 
      newText.setAttributeNS(null,"font-family","Verdana"); 
      newText.setAttributeNS(null,"font-weight","bold"); 
      newText.setAttributeNS(null,"font-size","10"); 
      newText.setAttributeNS(null,"dy","-5"); 
      newText.setAttributeNS(null,"fill","green"); 
      newText.setAttributeNS(null,"x", 5); 
      newText.setAttributeNS(null,"y", 5); 
      var newTextPath = document.createElementNS(svgNS, "textPath"); 
      newTextPath.setAttributeNS(null,"startOffset","10%"); 
      newTextPath.setAttributeNS(xlinkNS, "xlink:href", "#"+id); 
      var textNode = document.createTextNode("Quartile 3 (75% to 100%)"); 
      newTextPath.appendChild(textNode); 
      newText.appendChild(newTextPath); 
      elem.parentNode.insertBefore(newText, elem.nextSibling); 
     }); 
相关问题