Внешняя переменная в названии диаграммы

#javascript #php #charts #highcharts #gauge

#javascript #php #Диаграммы #высокие диаграммы #датчик

Вопрос:

Я работаю в школьном проекте и получаю данные из файла php для отображения в индикаторе. Я использую этот код javascript для обновления диаграммы каждую секунду:

     function requestData() {
    $.getJSON('values.php', function(data) {
            var new_value = data;
            var point = $('#ta').highcharts().series[0].points[0];
            point.update(new_value);
            setTimeout(requestData, 500)
            }

)
}
  

С помощью этого кода я могу обновить диаграмму, проблема в том, что мне нужно также отобразить числовое значение в другой части диаграммы. Вот что я пытаюсь:

   yAxis: {
        title: {
            text: '<div id="tav">' new_value 'V</div>',
            useHTML: true,
            y: 80
        }
  

Когда я ставлю «new_value», диаграмма перестает работать, и я ничего не вижу. Если оставить «new_value» в этой части диаграммы, он работает отлично.

Кто-нибудь может мне помочь? Спасибо

Ответ №1:

Чтобы обновить заголовок оси y, вы должны использовать код, подобный:

 $('#container').highcharts().yAxis[0].update({
            title:{
                text:"My text"
            }
        });
  

Я создал демонстрационную версию того, как динамически обновлять заголовок оси y при нажатии кнопки: DEMO

Раздел кода JS для динамического обновления заголовка диаграммы при нажатии кнопки:

 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" !');
});
  

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

1. Рад вам помочь ! 🙂

Ответ №2:

Проблема в том, что new_value определяется локально. Вы могли бы определить переменную как свойство объекта:

 var obj = {};
function requestData() {
$.getJSON('values.php', function(data) {
        obj.new_value = data;
        var point = $('#ta').highcharts().series[0].points[0];
        point.update(new_value);
        setTimeout(requestData, 500)
        }

)
}
  

и

 yAxis: {
    title: {
        text: '<div id="tav">' obj.new_value 'V</div>',
        useHTML: true,
        y: 80
    }
  

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

1. Я пробовал и не сработало. Точка датчика больше не обновляется, а значение new_value в yAxis отображается неопределенным

2. Когда вы назначаете yAxis ? Вы слушаете какое-либо событие?

3. единственным событием является загрузка, которая вызывает функцию requestData

Ответ №3:

Используйте действительно Axis.setTitle() метод, см.:

  function requestData() {
     $.getJSON('values.php', function (data) {
         var new_value = data;
         var chart = $('#ta').highcharts()
         var point = chart.series[0].points[0];
         var yAxis = chart.yAxis[0];

         yAxis.setTitle({text: new_value });
         point.update(new_value);
         setTimeout(requestData, 500);
     })
 }
  

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

1. Когда я устанавливаю yAxis в качестве переменной, диаграмма перестает обновляться и останавливается на нуле. Что я должен записать в yAxis, должен ли я оставить это blanc?

2. Мой плохой, должен быть yAxis , не yAXis 😉 Отредактированный ответ. Спасибо!