ChartJS - различный цвет для каждой точки данных

Есть ли способ установить другой цвет в datapoint в линейном графике, если его значение выше определенного значения?

Я нашел этот пример для dxChart - qaru.site/info/1198496/... - и теперь ищет что-то похожее для ChartJS

Ответы

Ответ 1

Хороший вопрос относительно ChartJS. Я хотел сделать подобное. т.е. динамически менять цвет точки на другой цвет. Вы пробовали это ниже. Я просто попробовал, и это сработало для меня.

Попробуй это:

myLineChart.datasets[0].points[4].fillColor =   "rgba(000,111,111,55)" ; 

Или попробуйте следующее:

myLineChart.datasets[0].points[4].fillColor =  "#FF0000";

Или даже это:

myLineChart.datasets[0].points[4].fillColor =  "lightgreen";

Затем сделайте следующее:

myLineChart.update();

Наверное, у тебя может быть что-то похожее;

if (myLineChart.datasets[0].points[4].value > 100) {
    myLineChart.datasets[0].points[4].fillColor =  "lightgreen";
    myLineChart.update();
 }

Дайте ему попробовать в любом случае.

Ответ 2

При обновлении до версии 2.2.2 ChartJS я обнаружил, что принятый ответ больше не работает. Наборы данных будут содержать массив, содержащий информацию о стилях для свойств. В этом случае:

var pointBackgroundColors = [];
var myChart = new Chart($('#myChart').get(0).getContext('2d'), {
    type: 'line',
    data: {
        datasets: [
            {
                data: dataPoints,
                pointBackgroundColor: pointBackgroundColors
            }
        ]
    }
});

for (i = 0; i < myChart.data.datasets[0].data.length; i++) {
    if (myChart.data.datasets[0].data[i] > 100) {
        pointBackgroundColors.push("#90cd8a");
    } else {
        pointBackgroundColors.push("#f58368");
    }
}

myChart.update();

Я нашел это, просматривая образцы для ChartJS, в частности, это: "Различные варианты размеров точек"

Ответ 3

Здесь то, что сработало для меня (v 2.7.0), сначала мне пришлось установить pointBackgroundColor и pointBorderColor в наборе данных в массив (вы можете заполнить этот массив цветами в первую очередь, если хотите):

var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        datasets: [
            {
                data: dataPoints,
                pointBackgroundColor: [],
                pointBorderColor: [],
            }
        ]
    }
});

Затем вы можете обезьяны с цветами точек непосредственно:

  myChart.data.datasets[0].pointBackgroundColor[4] = "#cc00cc";
  myChart.data.datasets[0].pointBorderColor[4] = "#cc0000";
  myChart.update();

Некоторые другие свойства, с которыми можно играть, чтобы отличить точку: pointStrokeColor (по-видимому, существует, но я не могу заставить ее работать), pointRadius и pointHoverRadius (целые числа), pointStyle ('треугольник', 'rect', 'rectRot' 'cross', 'crossRot', 'star', 'line' и 'dash'), хотя я не могу представить значения по умолчанию для pointRadius и pointStyle.

Ответ 4

Просто добавив, что сработало для меня в новой версии 2.0.

Вместо:

myLineChart.datasets[0].points[4].fillColor =  "lightgreen";

Мне пришлось использовать:

myChart.config.data.datasets[0].backgroundColor[4] = "lightgreen";

Не уверен, что из-за изменения в 2.0 или из-за того, что я использую гистограмму, а не линейную диаграмму.

Ответ 5

Если вы инициализируете myChart таким образом,

var myChart = new Chart(ctx, {
  type: 'line',
  data: {

вы должны изменить цвет линии по этому коду

  myChart.data.datasets[0].backgroundColor[0] ="#87CEFA";

Если вы инициализируете myChart таким образом,

myBar = new Chart(ctx).Line(barChartData, {

вы должны изменить цвет линии по этому коду

myLineChart.datasets[0].points[4].fillColor =  "#FF0000";