Używam wykresu Gauge na podstawie ( Chartjs-tsgauge ). Chcę ustawić kolory tła dla wykresu oddzielnie od limitów miernika. Problem z tym, jak Charts.JS renderuje tło, ponieważ wtyczka, której użyłem, nie ma kodu dotyczącego tła. Na przykład mam miernik z ograniczeniami [0, 20, 40, 60, 80, 100]
. Chcę ustawić [0-30]
kolor zielony, [30-70]
żółty i [70-100]
czerwony. Aktualny kod: CodePEN
Oto moje obecne opcje.
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
}
});
A oto moje podejście do ustawiania kolorów tła.
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
}
});
Obecnie Chart.JS
dopasowuje kolory 0
do i
z ograniczeniami 0
do i
. Pomyślałem też, że narysuję kolejną atrapę z pożądanymi kolorami i ustawię ją na szczycie prawdziwej tabeli, ale wydaje się to podejrzane.
javascript
html5-canvas
chart.js
kenarsuleyman
źródło
źródło
Odpowiedzi:
Poprzednie rozwiązanie
Możesz nieco zmienić swój zestaw danych, aby to osiągnąć:
Ponieważ Twoje
gagueLimits
są obecnie podzielone na szereg20
, więc nie możesz uzyskać dostępu do limitu 30,Więc co zrobiłem tutaj opracowało
guageLimits
w zakresie dzielonym10
i teraz30
jest dostępny, tak jest70
,Teraz o kolorach, każdy z nich
guageLimits
wymaga koloru wbackgroundColor
tablicy, ustawiam je odpowiednio, sprawdź powyższą tablicę. Ponieważ żaden z odpowiednich kolorów nie może być pusty, może być konieczne użycie tego samego koloru, aż do osiągnięcia następnego zakresu kolorów.Zaktualizowane rozwiązanie
Twoje wymagania zostały teraz wyjaśnione:
Teraz, technicznie rzecz biorąc, jeśli chcesz ustawić zakres kolorów na konkretny punkt, musisz mieć tę wartość na
gaugeLimits
tablicy, aby zredukowanagaugeLimits
tablica wyglądała teraz tak:Cóż, nie, możesz odpowiednio ustawić kolory, ponieważ masz punkty określone w tablicy. Dlatego
backgroundColor
tablica jest:Teraz ostatnia sztuczka
Nadal musisz ukryć
showMarkers
cyfry 30 i 70 przed skalą, próbowałem przełączyć kod, wygląda na to, że całkowicie włącza lub wyłącza widoczną skalę liczb, próbowałem podać tablicę ciągów, ale akceptuje ona tylkoboolean
Chartjs-tsgauge Nie dostarcza wiele dokumentacji na temat dostępnych opcji, więc wślizgnąłem się do kodu i znalazłem
markerFormatFn
Zajmuje funkcję jako parametr i możesz podać funkcję, która mówi, co zrobić z każdym ze swoich znaczników.
Tak więc wpadłem na pomysł, aby udostępnić funkcję, która będzie wyświetlać tylko liczby, które można podzielić przez 20 bez żadnej reszty, w przeciwnym razie zwrócę pusty ciąg znaków, oto on:
Sprawdź fragment:
źródło