Highchart-afficher / cacher un axe des y sans cacher la série
je travaille avec Highchart. J'ai plusieurs séries graphe dans lequel chaque série ont leur propre axe des ordonnées.
un peu comme celui-ci (jsfiddle)
quand on clique sur la légende d'une série, elle la cache et l'axe des y associé
(en utilisant showEmpty:false
a aidé à cacher aussi le nom de l'axe)
ce que j'essaie de réaliser c'est cacher l'axe y d'une série donnée sans cacher 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 fonctionne pas. Quelqu'un sait comment je dois faire ?
EDIT: j'ai réussi à modifier le texte pour que je puisse supprimer le titre de l'axe en définissant le texte à nul mais ce n'est pas suffisant pour cacher l'axe entier et ses valeurs.
voici ce que j'ai fait pour modifier le texte:
serie.yAxis.axisTitle.attr({
text: null
});
2 réponses
Highcharts 4.1.9+
Depuis 4.1.9, il y a une option l'Axe.visible qui peut être utilisé pour afficher/masquer un axe, la démo: http://jsfiddle.net/3sembmfo/36/
versions plus anciennes de Highcharts
c'est une nouvelle fonctionnalité pour Highcharts 3.0 - qui permet de mettre à jour les axes en temps réel: chart.yAxis[0].update(object)
- comme objet prend les mêmes options que pour la création graphique. Par exemple:
chart.yAxis[0].update({
labels: {
enabled: false
},
title: {
text: null
}
});
Et jsFiddle: http://jsfiddle.net/39xBU/2/
EDIT:
utilisez ci-dessous snippet pour masquer/afficher axis en appelant juste axis.hide()
et axis.show()
. Démonstration 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);
nous pouvons cacher l'étiquette de Yaxis sans cacher L'axe des y sans cacher la série en retournant la chaîne vide comme suit:
yAxis: {
title: '',
labels: {
formatter: function() {
return '';
},
style: {
color: '#4572A7'
}
}
},