Как добавить пороги с определенными диапазонами в график Highcharts?

Вопросы и ответы

Я работаю над линейным графиком Highcharts, где мне нужно добавить пороги с конкретными диапазонами по оси x. Я хочу, чтобы определённые области графика были окрашены в зависимости от этих порогов. Вот детали моей проблемы: Я использовал параметры настройки зон в Highcharts, чтобы попытаться реализовать это, но не получаю желаемых результатов. Вот код, который я использовал до сих пор:

Пороги:

Порог 1:
    Значение: 10°C
    Диапазон: от 100 метров до 500 метров (по оси x)

Порог 2:
    Значение: 20°C
    Диапазон: от 600 метров до 2682 метров (по оси x)

Я хочу:

Закрасить область между 100 метрами и 500 метрами в красный цвет, если температура выше 10°C.
Закрасить область между 600 метрами и 2682 метрами в красный цвет, если температура выше 20°C.
Отобразить пунктирные линии на порогах 10°C и 20°C.

  Highcharts.chart('container', {
  title: {
    text: 'Термальный профиль'
  },
  series: [
    {
      name: 'Температура 0-10°C',
      data: [
        [0, 20.18], [1, 20.21], [2, 20.38], /* ... */ [99, 19.95] // Данные отфильтрованы для температур ниже 10°C
      ],
      color: '#83c081', // Цвет для температур < 10°C
      zones: [
        {
          value: 10,
          color: '#83c081'
        }
      ]
    },
    {
      name: 'Температура 10-20°C',
      data: [
        [100, 10.5], [101, 11.2], /* ... */ [499, 19.8] // Данные отфильтрованы для температур между 10°C и 20°C
      ],
      color: '#dc0059', // Цвет для температур > 10°C и < 20°C
      zones: [
        {
          value: 20,
          color: '#dc0059'
        }
      ]
    },
    {
      name: 'Температура 20-30°C',
      data: [
        [600, 21.5], [601, 22.0], /* ... */ [2682, 27.5] // Данные отфильтрованы для температур между 20°C и 30°C
      ],
      color: '#83c081', // Цвет для температур > 20°C
      zones: [
        {
          color: '#83c081'
        }
      ]
    }
  ],
  xAxis: {
    title: {
      text: 'Расстояние (м)'
    },
    categories: ["0", "550", "1100", "1650", "2150", "2682"]
  },
  yAxis: {
    title: {
      text: 'Температура (°C)'
    },
    plotLines: [
      {
        color: '#dc0059',
        dashStyle: 'Dash',  // Пунктирная линия
        value: 10, // Порог на 10°C
        width: 2,
        label: {
          text: 'Порог 10°C',
          align: 'right'
        }
      },
      {
        color: '#dc0059',
        dashStyle: 'Dash',  // Пунктирная линия
        value: 20, // Порог на 20°C
        width: 2,
        label: {
          text: 'Порог 20°C',
          align: 'right'
        }
      }
    ]
  },
  tooltip: {
    headerFormat: '<b>{point.x} м</b><br>',
    pointFormat: 'Температура: {point.y} °C'
  }
});

Ответ

Для добавления пороговых значений с определенными диапазонами на график Highcharts, можно воспользоваться настройками зон и заливками, чтобы изменить цвет определенных областей графика в зависимости от температуры. Давайте исправим ваш код, чтобы добиться желаемых результатов.

Вот обновленный код:

Highcharts.chart('container', {
    title: {
        text: 'Тепловой профиль'
    },
    series: [
        {
            name: 'Температура 0-10°C',
            data: [
                [0, 20.18], [1, 20.21], [2, 20.38], /* ... */ [99, 19.95] // Данные с температурами ниже 10°C
            ],
            color: '#83c081', // Цвет для температур < 10°C
            zones: [
                {
                    value: 10,
                    color: '#83c081'
                }
            ]
        },
        {
            name: 'Температура 10-20°C',
            data: [
                [100, 10.5], [101, 11.2], /* ... */ [499, 19.8] // Данные с температурами между 10°C и 20°C
            ],
            color: '#dc0059', // Цвет для температур > 10°C и < 20°C
            zones: [
                {
                    value: 20,
                    color: '#dc0059' // Температуры, между 10°C и 20°C
                }
            ]
        },
        {
            name: 'Температура 20-30°C',
            data: [
                [600, 21.5], [601, 22.0], /* ... */ [2682, 27.5] // Данные с температурами между 20°C и 30°C
            ],
            color: '#83c081', // Цвет для температур > 20°C
            zones: [
                {
                    color: '#83c081'
                }
            ]
        }
    ],
    xAxis: {
        title: {
            text: 'Расстояние (м)'
        },
        // Используйте 'min' и 'max', чтобы установить пределы оси, если нужно
        min: 0,
        max: 3000,
        plotLines: [{
            value: 100,
            color: '#dc0059',
            width: 2,
            dashStyle: 'Dash',
            label: {
                text: 'Порог 10°C',
                align: 'left'
            }
        }, {
            value: 600,
            color: '#dc0059',
            width: 2,
            dashStyle: 'Dash',
            label: {
                text: 'Порог 20°C',
                align: 'left'
            }
        }]
    },
    yAxis: {
        title: {
            text: 'Температура (°C)'
        },
        plotLines: [
            {
                color: '#dc0059',
                dashStyle: 'Dash',  // Пунктирная линия
                value: 10, // Порог на 10°C
                width: 2,
                label: {
                    text: 'Порог 10°C',
                    align: 'right'
                }
            },
            {
                color: '#dc0059',
                dashStyle: 'Dash',  // Пунктирная линия
                value: 20, // Порог на 20°C
                width: 2,
                label: {
                    text: 'Порог 20°C',
                    align: 'right'
                }
            }
        ]
    },
    tooltip: {
        headerFormat: '<b>{point.x} м</b><br>',
        pointFormat: 'Температура: {point.y} °C'
    }
});

Объяснение изменений:

  1. Настройка зон: Убедитесь, что секции данные (data) соответствуют вашим порогам и правильно окрашены в зависимости от температуры. Используйте zones как в примере, чтобы создать зону для температур выше 10°C и выше 20°C.

  2. Пороговые линии на оси X: Я добавил plotLines на оси X для отображения линий на 100 м и 600 м, чтобы указать, где начинаются пороговые области. Это помогает визуально увидеть, где начинаются заданные диапазоны.

  3. Замечания по цветам: Подбирайте цвета так, чтобы они четко отличались для разных температур. В примере выше используются два основных цвета: один для температур ниже 10°C и другой для температур между 10°C и 20°C.

  4. Данные: Убедитесь, что данные в data для каждой серии корректны и соответствуют каждому диапазону температур.

С этими изменениями вы должны получить график с заливками разных цветов для заданных диапазонов, пунктирными линиями на порогах и корректными отображениями температур.

Оцените материал
Добавить комментарий

Капча загружается...