guideline example data color change highcharts

highcharts - example - Highchart: muestra/oculta un eje y sin ocultar la serie



legend highcharts (1)

Estoy trabajando con Highchart. Tengo un gráfico de series múltiples en el que cada serie tiene su propio eje y.

muy parecido a este (jsfiddle)

cuando hacemos clic en el elemento de leyenda para una serie, lo oculta y el eje y asociado (usando showEmpty:false ayudó a ocultar también el nombre de los ejes)

Lo que intento lograr es ocultar el eje y de una serie determinada sin ocultar la serie en sí.

Traté de ocultarlo modificando la propiedad showAxis de esta manera:

serie.yAxis.showAxis = false;

pero no funciona. ¿Alguien sabe cómo debo hacer?

EDITAR: Logré editar el texto para poder eliminar el título del eje al establecer el texto como nulo, pero no es suficiente para ocultar todo el eje y sus valores.

esto es lo que hice para editar el texto:

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


Highcharts 4.1.9+

Desde 4.1.9, hay una opción Axis.visible que se puede usar para mostrar / ocultar un eje, demo: http://jsfiddle.net/3sembmfo/36/

Versiones anteriores de Highcharts

Es una característica nueva para Highcharts 3.0, que permite actualizar ejes en tiempo real: chart.yAxis[0].update(object) - como objeto toma las mismas opciones que para crear un gráfico. Por ejemplo:

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

Y jsFiddle: http://jsfiddle.net/39xBU/2/

EDITAR:

Use el siguiente fragmento para ocultar / mostrar el eje con solo llamar a axis.hide() y axis.show() . Demostración en vivo: 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);