web-dev-qa-db-fra.com

Highchart - afficher/masquer un axe des y sans masquer la série

Je travaille avec Highchart ... J'ai un graphique à plusieurs séries dans lequel chaque série a son propre axe des ordonnées.

à peu près comme celui-ci (jsfiddle)

lorsque nous cliquons sur l'élément de légende d'une série, celle-ci est masquée ainsi que l'axe des y associé (utiliser showEmpty:false permet également de masquer le nom des axes)

Ce que je cherche à faire, c’est masquer l’axe y d’une série donnée sans masquer la série elle-même.

J'ai essayé de le cacher en modifiant la propriété showAxis comme ceci: 

serie.yAxis.showAxis = false;

mais ça ne marche pas ... Tout le monde sait comment je devrais faire?

EDIT: J'ai réussi à éditer le texte afin de pouvoir supprimer le titre de l'axe en définissant le texte sur null mais ce n'est pas suffisant pour masquer l'axe complet et ses valeurs.

voici ce que j'ai fait pour éditer le texte: 

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

Highcharts 4.1.9+

Depuis 4.1.9, il existe une option Axis.visible qui peut être utilisée pour afficher/masquer un axe, démo: http://jsfiddle.net/3sembmfo/36/

Anciennes versions de Highcharts

C'est une nouvelle fonctionnalité de Highcharts 3.0 - qui permet de mettre à jour les axes en temps réel: chart.yAxis[0].update(object) - en tant qu'objet prenant les mêmes options que pour créer un graphique. Par exemple:

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

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

MODIFIER:

Utilisez l'extrait ci-dessous pour masquer/afficher l'axe en appelant simplement axis.hide() et axis.show(). Démo en direct: 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);
48
Paweł Fus

Nous pouvons masquer l’étiquette Yaxis sans masquer l’axe des y sans masquer la série en renvoyant la chaîne vide comme suit: 

yAxis: {
       title: '',
       labels: {
                formatter: function() {
                    return '';
                },
                style: {
                    color: '#4572A7'
                }
        }

}, 

0
Jagadeesh

C'est en fait devenu plus simple. Vous devez uniquement définir l'attribut title yAxis sur false:

yAxis: {
   title: false
},

Voici un exemple: exemple jsfiddle

0
GeoffreyMahugu