Highcharts: динамически (программно) присваивать имя оси

#javascript #jquery #graph #charts #highcharts

#javascript #jquery #График #Диаграммы #диаграммы высот

Вопрос:

Я пытаюсь программно добавить строку к оси x вместо того, чтобы объявлять ее при создании диаграммы.

Итак, например, у меня есть моя диаграмма:

 $.(document).ready(function{) {
    chart=new Highcharts.Chart({
        chart:{
            renderTo: 'container',
            type: 'line'
        }
    yAxis: {
        title: { text: 'theYaxis'}
    }
    series: [1,2,3,4]
    });
});
  

Теперь я хочу изменить название yAxis, поэтому я создаю небольшую функцию; так что это будет выглядеть так:

var titleY;

 function loadme(){

    $.get('names.csv', function(data){
        var lines= data.split('n');
        titleY=lines[0].split(','[0];
    });
}

$.(document).ready(function{) {
    chart=new Highcharts.Chart({
        chart:{
            renderTo: 'container',
            type: 'line'
        }
    yAxis: {
        title: { text: titleY}
    }
    series: [1,2,3,4]
    });
    loadme();
});
  

Это приведет к тому, что заголовок будет пустым.

Я проверяю, правильно ли получено значение, используя console.log, и значение собирается и печатается. Что здесь не так? Я получаю ту же проблему, если я заполняю функцию $.get данными, которые я хочу добавить в ряд на диаграмме: данные никогда не добавляются на диаграмму, даже если они правильно извлечены.

Ответ №1:

Я создал демонстрационную скрипку для динамического изменения названия оси y. Обратитесь к этому JSFIDDLE

HTML:

 <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

<input type="button" value="Change Y-axis Title to 'My text'" id="my_btn">
  

JS (часть кода для обновления названия оси y при нажатии кнопки):

 var chart = $('#container').highcharts();
    $('#my_btn').click(function(){
        //alert('hey');
        chart.yAxis[0].update({
            title:{
                text:"My text"
            }
        });
        alert('Y-axis title changed to "My text" !');
    });
  

Обратитесь к документации функции Highcharts ‘update’ для получения дополнительной информации.

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

1. Спасибо, Рахул! Мне придется попробовать это без кнопки и добавить код обновления внутри функции, надеюсь, это сработает 🙂

2. Дайте мне знать, если вы обнаружите какую-то проблему, я помогу вам!

Ответ №2:

У вас есть два варианта:

  • используйте axis.setTitle() — хорошая производительность, я советую использовать это решение для настройки заголовка
  • использовать axis.update() — более низкая производительность, потому что он воссоздает всю ось, в то время как первый метод изменяет только заголовок

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

1. Спасибо, Павел, я также использую обновление для добавления значений на диаграмму; так что влияние на производительность для меня не проблема; мне нужно заново нарисовать всю ось снова.

2. При установке новых данных изменяются только крайние значения на оси. При использовании update ось удаляется и добавляется обратно.