I have the following chart options in my Angular application for a sankey chart:
this.chartOptions = {
color: ["#922752", "#ff9822", "#4390e1", "#53bcbc"],
tooltip: {
backgroundColor: "#ffffff",
borderWidth: 1,
formatter: `<b>{b}</b><br/>{c} ${this.unit}`,
padding: 8,
textStyle: { color: "#212529" },
trigger: "item",
triggerOn: "mousemove",
},
series: [
{
type: "sankey",
left: 0,
top: 0,
bottom: 0,
nodeWidth: 10,
data: this.seriesData,
draggable: false,
label: {
fontWeight: "bold",
formatter: "{b}",
},
links: this.seriesLinks,
focusNodeAdjacency: "allEdges",
itemStyle: {
borderWidth: 0,
},
lineStyle: {
color: "source",
curveness: 0.5,
},
},
],
};
This is the current result:
But the goal is that on the first level each node should have another color and the levels underneath it (depth +1) should have the parent color but only with -10% color saturation.
Example:
Do you know how many levels will be in the resulting chart? If yes, just set color transform manually like in official example:
Echarts has no built-in color transform functions but you can take any library like TinyColor or Chroma.js and generate color with saturation.
If you need to make it automatically then just generate
levels
with predefined setup from dimensions of you data and set it into the chart with setOption.