2014-06-18 3 views
4

J'ai un graphique à barres simple de High-Chart de la série 1 où je charge les données en utilisant json. Dans my fiddle je viens de définir les données json comme une variable statique pour plus de simplicité, mais la prémisse est la même.Les Highcharts utilisent des étiquettes de séries comme des catégories d'axes x

Les données JSON constitue la base de toutes les propriétés de la série, y compris le nom et est formaté comme si, ce qui correspond à de nombreux exemples que je l'ai vu:

var json = [{ 
    "name": "Currency Allocation", 
    "data": [ 
     ["gbp", 0.7053985], 
     ["usd", 0.17856322], 
     ["eur", 0.06901525], 
     ["chf", 0.00135777], 
     ["jpy", 0.00815169], 
     ["em_asia", 0.02821377], 
     ["other", 0.00982446] 
    ] 
}]; 

je voudrais l'étiquette, qui est le premier élément de chaque sous-groupe data doit être la catégorie d'axe des x pour le graphique. Cependant, il semble que je doive définir séparément les catégories d'axes x sous cht.xAxis.categories. Yat-il un moyen d'éviter cela et juste utiliser les catégories dans mes données?

Si j'exclus la propriété xAxis.categories le graphique est tracé avec quelques chiffres sur l'axe des x

Répondre

8

Vous pouvez le faire sur un appel et une boucle chart.events.load par les valeurs series[0].data. Puisque vous dites que vous n'avez qu'une seule série par diagramme, je suppose également que vous n'en avez qu'une seule. Vous feriez boucle à travers vos données comme ceci:

var seriesData = this.series[0].data; 
var tCategories = []; 
for (i = 0; i < seriesData.length; i++) { 
    tCategories.push(seriesData[i].name); 
} 
this.xAxis[0].setCategories(tCategories); 

en direct demo.

méthode moins complexe est de définir votre xAxis.type comme 'category':

"xAxis": { 
    "type": "category" 
}, 

en direct demo.

+0

La deuxième partie de votre réponse est exactement ce que je recherchais. Impossible de trouver cela dans les documents de l'API. Merci – harryg

Questions connexes