Верхние диаграммы используют метки рядов в качестве категорий по оси x

#javascript #jquery #json #highcharts

#javascript #jquery #json #верхние диаграммы

Вопрос:

У меня есть простая гистограмма из 1-й серии, в которую я загружаю данные с помощью json. В моей скрипке я просто определил данные json как статическую переменную для простоты, но предпосылка та же.

Данные json образуют основу для всех свойств рядов, включая имя, и форматируются следующим образом, что согласуется со многими примерами, которые я видел:

 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]
    ]
}];
  

Я бы хотел, чтобы метка, которая является первым элементом в каждом data подмассиве, была категорией по оси x для диаграммы. Однако мне, похоже, приходится определять категории по оси x отдельно cht.xAxis.categories . Есть ли способ избежать этого и просто использовать категории в моих данных?

Если я исключу xAxis.categories свойство, диаграмма будет построена только с числами по оси x

Ответ №1:

Вы можете сделать это при chart.events.load вызове и циклическом просмотре series[0].data значений. Поскольку вы говорите, что у вас есть только одна серия на диаграмму, я также предполагаю, что у вас есть только одна xAxis . Вы бы перебирали свои данные следующим образом:

 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);
  

Живая демонстрация.

Менее сложный метод заключается в определении вашего xAxis.type как 'category' :

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

Живая демонстрация.

Комментарии:

1. Вторая часть вашего ответа — это именно то, что мне было нужно. Не удалось найти это в документах API. Спасибо