Я пытаюсь инвертировать цветовую шкалу для этой визуализации солнечных лучей.Он использует масштабируемую диаграмму солнечных лучей с метками и т. Д. Обычно вы просто инвертируете значения в диапазоне, который они используют, но я не совсем понимаю, как он получает значения в том, как это настроено.
Это цветовые схемы, которые я использую https://github.com/d3/d3-scale-chromatic
d3.interpolateViridis
В настоящее время он меняется от темно-фиолетового до ярко-желтого, и мне нужно инвертировать цвета, чтобы перейти от яркогоот желтого до темно-фиолетового.Поэтому мне нужно изменить начальную точку значения диапазона.Но я не понимаю, как он это делает ниже.
Предложенные подходы состояли в том, чтобы изменить диапазон и начать с самого высокого значения сначала для диапазона.Но это не похоже на работу.
require()('@observablehq/flare').then(data => {
const root = partition(data);
const color =
d3.scaleOrdinal().range(d3.quantize(d3.interpolateViridis,
data.children.length +1));
console.log(data.children.length)
root.each(d => d.current = d);
const svg = d3.select('#partitionSVG')
.style("width", "50%")
.style("height", "80%")
.style("font", "10px sans-serif")
const g = svg.append("g")
.attr('transform', 'translate(' + width/2 + ',' + height/2 +')');
const path = g.append("g")
.selectAll("path")
.data(root.descendants().slice(1))
.join("path")
.attr("fill", d => {
while (d.depth > 1)
d = d.parent;
return color(d.data.name);
})
.attr("fill-opacity", d => arcVisible(d.current) ? (d.children ? 0.6 : 0.4) : 0)
.attr("d", d => arc(d.current));