ChartJS-разные цвета для каждой точки данных
есть ли способ установить другой цвет для точки данных в линейном графике, если его выше определенного значения?
Я нашел этот пример для dxChart -https://stackoverflow.com/a/24928967/949195 - и теперь ищет что-то подобное для ChartJS
5 ответов
хороший вопрос относительно ChartJS. Я хотел сделать то же самое. Я. e динамическое изменение цвета точки На другой цвет. Вы пробовали это ниже. Я просто попробовал, и у меня получилось.
попробуйте это:
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 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, в частности этот: "Пример Разных Размеров Точек"
вот что сработало для меня (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.
просто добавляя то, что сработало для меня в новой версии 2.0.
вместо:
myLineChart.datasets[0].points[4].fillColor = "lightgreen";
мне пришлось использовать:
myChart.config.data.datasets[0].backgroundColor[4] = "lightgreen";
не уверен, что это из-за изменения 2.0 или потому, что я использую гистограмму, а не линейчатую диаграмму.
если вы инициализируете 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";