Chart.js Частично заполненная область/линейный график

#chart.js

Вопрос:

Я пытаюсь создать линейный/площадной график, который можно заполнить до определенной точки. Мое лучшее решение на данный момент имеет две основные проблемы. 1, Последняя кривая не совпадает с заполнением. 2, я могу заполнять данные только до точной оси. Я не могу заполнить до 17,5, я должен сделать это точно в точке данных. Моя лучшая попытка: https://codepen.io/MyPenAccount/pen/XWpXyJy

Моя попытка

 var ctx = document.getElementById("myChart").getContext("2d");

const colors = {
  darkBlue: {
    fill: '#92bed2',
    stroke: '#3282bf',
  }
};

const data1 = [26, 36, 42, 38, 40, 30, 12];
const data2 = [26, 36, 42, 38, 40, null, null];

const xData = [13, 14, 15, 16, 17, 18, 19];

const myChart = new Chart(ctx, {
  type: 'line',
  data: {
    labels: xData,
    datasets: [{
      label: "Data2",
      fill: true,
      backgroundColor: colors.darkBlue.fill,
      pointBackgroundColor: colors.darkBlue.stroke,
      borderColor: colors.darkBlue.stroke,
      pointHighlightStroke: colors.darkBlue.stroke,
      data: data2,
    }, {
      label: "Data1",
      fill: false,
      data: data1,
    }]
  },
  options: {
    responsive: false,
    scales: {
      yAxes: [{
        stacked: false,
      }]
    },
    animation: {
      duration: 0,
    },
  }
});
 

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

Немного лучшее, но худшее решение

Я начинаю думать, что у этой проблемы нет решения.

Ответ №1:

Я также недавно столкнулся с этой проблемой и решил ее, используя решение, аналогичное вашему.

К сожалению, в Chart.js нет простого способа установить цвет фона диаграммы в зависимости от зоны.

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

Другое решение, которое я попробовал, но оно оказалось менее удовлетворительным, — создать столбчатую диаграмму, высота столбиков которой была равна высоте диаграммы, чтобы я мог раскрасить всю область.