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.
data_distribution
mapping, doesn't includecolorScale
at all ... is this intentional ? – Janotconst data_distribution = this.state.pie_keys.map((d) => ({x:d, y:this.state.pie_data[d], label:d, colorScale:"red"}));
because I do not know how to do it properly – Tequilaconsole.log(data_dictionary);
immediately after that line, and look in the browser console at what you're creating. See if it makes sense to you and is what you expected, then compare it to the documentation for theVictoryChart
library – JanotcolorScale: ["red"]
as an argument to theVictoryPie
component, not as a field in your data. Try<VictoryPie ...{everything else}... colorScale={["red"]} />
– JanotVictoryChart
documentation states that I can also set it explicitly within the data object and I'm trying to find out how and if it is possible. – Tequila