useBarGroupPaths
The useBarGroupPaths hook takes an array of PointsArray, a ChartBounds object, and some padding options, and returns a list of SkPath paths and some details about the spacing of the bars.
Example
import {
  CartesianChart,
  useBarGroupPaths,
  type PointsArray,
  type ChartBounds,
} from "victory-native";
import { Path } from "@shopify/react-native-skia";
import DATA from "./my-data";
function MyCustomBarGroup({
  points,
  chartBounds,
  innerPadding,
}: {
  points: PointsArray[];
  chartBounds: ChartBounds;
}) {
  // 👇 use the hook to generate path objects.
  const { paths } = useBarGroupPaths(points, chartBounds);
  return paths.map((path) => <Path path={path} style="fill" color="red" />);
}
export function MyChart() {
  return (
    <CartesianChart data={DATA} xKey="x" yKeys={["y", "z"]}>
      {({ points }) => <MyCustomBarGroup points={[points.y, points.z]} />}
    </CartesianChart>
  );
}
Arguments
useBarGroupPaths has a function signature as follows:
useBarGroupPaths(points: PointsArray[], chartBounds: ChartBounds, betweenGroupPadding?: number, withinGroupPadding?: number ): { paths: SkPath[]; barWidth: number; groupWidth: number; gapWidth: number; }
points
The points argument is an array of PointsArray arrays used to generate the bars' paths. Generally, these arrays comes from a field of the points object exposed the children render function of CartesianChart, as illustrated in the example above.
chartBounds
A ChartBounds object needed to appropriately draw the bars. This generally comes from the chartBounds render argument of CartesianChart.
betweenGroupPadding
An optional number between 0 and 1 that represents what fraction of the horizontal space between the first and last bar groups should be "white space". Defaults to 0.2. Use 0 for no gap between groups, and values closer to 1 to make bars increasingly narrow.
withinGroupPadding
An optional number between 0 and 1 that represents what fraction of the horizontal space between the first and last bars within a group should be "white space". Defaults to 0.2. Use 0 for no gap between bars within a group, and values closer to 1 to make bars increasingly narrow.
Returns
useBarGroupPaths returns an object with the following fields.
paths
An array of SkPath path objects to be used as the path argument of a Skia <Path /> element.
barWidth
A number representing the width of each bar.
groupWidth
A number representing the width of each bar group.
gapWidth
A number representing the gap size between each bar in a group.