I used VictoryChart
to implement a pie graph and it works fine...
render() {
const data_distribution = this.state.pie_keys.map((d) => ({x:d, y:this.state.pie_data[d], label:d }));
return (
<div className="App">
<div className="pie_wrapper">
<VictoryPie
labelComponent={<VictoryTooltip cornerRadius={0} />}
padAngle={0.5}
innerRadius={100}
width={400} height={400}
style={{
labels: { fontSize: 15, fill: "black"},
data: {
fillOpacity: 0.9, stroke: "white", strokeWidth: 3
}
}}
labelRadius={90}
data = {data_distribution}
/>
</div>
</div>
);
}
It is important to note that data_distribution
simply looks as follows...
data={[
{ x: "Fac of Engineering & Appl Sci", y: 8.557902403495994 },
{ x: "Faculty of Arts and Science", y: 53.775188152464196 },
{ x: "Faculty of Education", y: 13.085700412721534 },
...
...
]}
So I'm wondering if I can set the color for each piece of the pie within the data object. The documentation specifies that...
color scales: "grayscale", "qualitative", "heatmap", "warm", "cool", "red", "green", "blue". VictoryPie will assign a color to each slice by index, unless they are explicitly specified in the data object.
This says that you can but I cannot figure out how. I tried the following...
data={[
{ x: "Fac of Engineering & Appl Sci", y: 8.557902403495994, colorScale:"red" },
{ x: "Faculty of Arts and Science", y: 53.775188152464196, colorScale:"red" },
{ x: "Faculty of Education", y: 13.085700412721534, colorScale:"red" },
...
...
]}
which translates to...
const data_distribution = this.state.pie_keys.map((d) => ({x:d, y:this.state.pie_data[d], label:d, colorScale:"red"}));
However, they do not turn red. I cannot find an example online. Is this possible to do or not?
I know that I can define colorScale: {[...]}
but that is not what I'm asking. I want to be able to set each piece of the pie from within the data object.