Я использую калибровочную диаграмму на основе ( Chartjs-tsgauge ). Я хочу установить цвета фона для графика отдельно от пределов датчика. Проблема с тем, как Charts.JS отображает фон, потому что используемый мной плагин не имеет кода о фонах. Например, у меня есть датчик с ограничениями [0, 20, 40, 60, 80, 100]
. Я хочу установить [0-30]
зеленый, [30-70]
желтый и [70-100]
красный. Текущий код: CodePEN
Вот мои текущие варианты.
var ctx = document.getElementById("canvas").getContext("2d");
new Chart(ctx, {
type: "tsgauge",
data: {
datasets: [{
backgroundColor: ["#0fdc63", "#fd9704", "#ff7143"],
borderWidth: 0,
gaugeData: {
value: 7777,
valueColor: "#ff7143"
},
gaugeLimits: [0, 3000, 7000, 10000]
}]
},
options: {
events: [],
showMarkers: true
}
});
И вот мой подход к настройке цветов фона.
new Chart(ctx, {
type: "tsgauge",
data: {
datasets: [{
backgroundColor: ["#0fdc63", "#fd9704", "#ff7143"],
borderWidth: 0,
gaugeData: {
value: 50,
valueColor: "#ff7143"
},
gaugeLimits: [0, 20, 40, 60, 80, 100],
gaugeColors: [{
min: 0,
max: 30,
color: ""
}, {
min: 30,
max: 70,
color: ""
},{
min:70,
max:100,
color: ""
}]
}]
},
options: {
events: [],
showMarkers: true
}
});
В настоящее время Chart.JS
соответствует цветам 0
к i
пределам 0
в i
. Я также подумал о том, чтобы нарисовать еще одну фиктивную диаграмму с желаемыми цветами и установить ее поверх реальной диаграммы, но мне кажется, что это хитрый способ.
javascript
html5-canvas
chart.js
kenarsuleyman
источник
источник
Ответы:
Предыдущее решение
Вы можете немного изменить свой набор данных, чтобы добиться этого:
Так как вы
gagueLimits
разделены на диапазон в20
настоящее время, поэтому вы не можете получить доступ к пределу 30,Итак, то, что я сделал здесь, разработано
guageLimits
для разделения диапазона10
и теперь30
доступно, так это70
,Теперь о цветах, каждому из которых
guageLimits
требуется цвет вbackgroundColor
массиве, я установил их соответствующим образом, проверьте приведенный выше массив. Поскольку ни один из соответствующих цветов не может быть пустым, вам может потребоваться использовать один и тот же цвет, пока не дойдете до следующего цветового диапазона.Обновленное решение
Ваши требования очищены сейчас:
Теперь, технически, если вы хотите установить диапазон цветов для определенной точки, вам нужно иметь это значение в
gaugeLimits
массиве, чтобы ваш уменьшенныйgaugeLimits
массив теперь стал таким:Ну, нет, вы можете установить цвета соответственно, так как у вас есть точки, указанные в массиве. Следовательно,
backgroundColor
массив:Теперь последний трюк
Вам все еще нужно скрывать 30 и 70 от шкалы, я пытался переключить
showMarkers
в вашем коде, похоже, что он либо полностью включает, либо отключает видимую шкалу чисел, я пытался предоставить массив строк, но он принимает толькоboolean
Chartjs-tsgauge Не предоставляет много документации о доступных опциях, поэтому я прокрался в код и нашел
markerFormatFn
Он принимает функцию в качестве параметра, и вы можете предоставить функцию, сообщающую, что делать с каждым из ваших элементов маркера.
Итак, у меня возникла идея предоставить функцию, которая будет показывать только числа, которые делятся на 20 без остатка, в противном случае возвращает пустую строку, вот она:
Проверьте фрагмент:
источник