2013-03-07 104 views
19

我正在使用Highchart。 我有一个多系列图,其中每个系列都有自己的y轴。Highchart - 在不隐藏系列的情况下显示/隐藏y轴

pretty much like this one (jsfiddle)

当我们点击了一系列的图例项,它隐藏它和相关的y轴 (使用showEmpty:false帮助也隐藏轴的名称)

我是什么试图实现隐藏给定系列的Y轴而不隐藏系列本身。

我试图通过修改showAxis属性像这样隐藏:

serie.yAxis.showAxis = false; 

,但它不工作。 任何人都知道我应该怎么做?

编辑:我设法编辑文本,所以我可以通过将文本设置为空删除轴标题,但它不足以隐藏整个轴和它的值。

这里就是我做编辑的文本:

serie.yAxis.axisTitle.attr({ 
      text: null 
     }); 
+0

有没有官方的方法来简单地隐藏轴。我发布了[功能请求,您可以在此投票](http://highcharts.uservoice.com/forums/55896-general/suggestions/5164818-control-axis-visibility-show-hide-toggle-axes )。 – 2013-12-10 11:12:00

回答

45

Highcharts 4.1.9+

4.1.9以来,有一个选项Axis.visible可用于显示/隐藏轴,演示:http://jsfiddle.net/3sembmfo/36/

旧版本Highcharts的

这是Highcharts 3.0的一项新功能 - 允许实时更新坐标轴:chart.yAxis[0].update(object) - 由于对象采用与创建图表相同的选项。例如:

 chart.yAxis[0].update({ 
      labels: { 
       enabled: false 
      }, 
      title: { 
       text: null 
      } 
     }); 

而且的jsfiddle:http://jsfiddle.net/39xBU/2/

编辑:

使用下段由只调用axis.hide()axis.show()隐藏/显示轴。现场演示:http://jsfiddle.net/39xBU/183/

(function (HC) { 
    var UNDEFINED; 
    HC.wrap(HC.Axis.prototype, 'render', function (p) { 
     if (typeof this.visible === 'undefined') { 
      this.visible = true; 
     } 
     if(this.visible) { 
      this.min = this.prevMin || this.min; 
      this.max = this.prevMax || this.max; 
     } else { 
      this.prevMin = this.min; 
      this.prevMax = this.max; 
      this.min = UNDEFINED; 
      this.max = UNDEFINED; 
     } 

     this.hasData = this.visible; 

     p.call(this); 
    }); 

    HC.Axis.prototype.hide = function() { 
     this.visible = false; 
     this.render(); 

     HC.each(this.plotLinesAndBands, function (plotLine) { 
      plotLine.render(); 
     }); 
    }; 

    HC.Axis.prototype.show = function() { 
     this.visible = true; 
     this.render(); 

     HC.each(this.plotLinesAndBands, function (plotLine) { 
      plotLine.render(); 
     }); 
    }; 
})(Highcharts); 
+0

看起来正是它!我今天下午试试。谢谢 – Guian 2013-03-08 11:09:19

+0

@Paweł:其他人已经发布了各种[其他方法](http://stackoverflow.com/questions/10877927/hide-axis-and-gridlines-highcharts)来隐藏轴。这使得如何正确地做到这一点令人困惑。如果HighCharts实现了[切换轴可见性的简单功能],那将是非常棒的(http://highcharts.uservoice.com/forums/55896-general/suggestions/5164818-control-axis-visibility-show-hide-toggle-axes )。 (另外,你的答案不会隐藏滴答声 - 请参阅[例子](http://jsfiddle.net/39xBU/55/))。 – 2013-12-10 11:14:20

+0

更新的解决方案是否已经很简单?我的例子不会隐藏plotLines,plotBands等,但它应该像添加需要隐藏的选项一样简单。 – 2013-12-10 11:42:30