Convert Figma logo to code with AI

FormidableLabs logovictory-native

victory components for react native

2,006
158
2,006
68

Top Related Projects

23,884

Redefined chart library built with React and D3

19,429

🐯 visx | visualization components

108,427

Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:

64,568

Simple HTML5 Charts using the <canvas> tag

Quick Overview

Victory Native is a React Native wrapper for the Victory charting library, allowing developers to create interactive and customizable charts and data visualizations in React Native applications. It provides a seamless integration of Victory's powerful charting capabilities with React Native's mobile development framework.

Pros

  • Seamless integration with React Native projects
  • Wide variety of chart types and customization options
  • Consistent API with the web version of Victory
  • Active development and community support

Cons

  • Performance can be slower compared to native charting libraries
  • Limited animation capabilities in some chart types
  • Learning curve for developers new to Victory ecosystem
  • Some advanced features may require additional configuration

Code Examples

  1. Creating a simple bar chart:
import { VictoryBar, VictoryChart, VictoryTheme } from "victory-native";

const BarChart = () => (
  <VictoryChart theme={VictoryTheme.material}>
    <VictoryBar
      data={[
        { x: 1, y: 2 },
        { x: 2, y: 4 },
        { x: 3, y: 3 },
        { x: 4, y: 5 },
      ]}
    />
  </VictoryChart>
);
  1. Creating a pie chart with custom colors:
import { VictoryPie } from "victory-native";

const PieChart = () => (
  <VictoryPie
    data={[
      { x: "Cats", y: 35 },
      { x: "Dogs", y: 40 },
      { x: "Birds", y: 25 },
    ]}
    colorScale={["tomato", "orange", "gold"]}
  />
);
  1. Creating a line chart with multiple datasets:
import { VictoryLine, VictoryChart, VictoryLegend } from "victory-native";

const LineChart = () => (
  <VictoryChart>
    <VictoryLegend x={125} y={50}
      title="Temperature"
      centerTitle
      orientation="horizontal"
      gutter={20}
      data={[
        { name: "New York", symbol: { fill: "tomato" } },
        { name: "London", symbol: { fill: "blue" } },
      ]}
    />
    <VictoryLine
      style={{ data: { stroke: "tomato" } }}
      data={[
        { x: 1, y: 2 },
        { x: 2, y: 3 },
        { x: 3, y: 5 },
        { x: 4, y: 4 },
      ]}
    />
    <VictoryLine
      style={{ data: { stroke: "blue" } }}
      data={[
        { x: 1, y: 1 },
        { x: 2, y: 4 },
        { x: 3, y: 3 },
        { x: 4, y: 2 },
      ]}
    />
  </VictoryChart>
);

Getting Started

  1. Install Victory Native:

    npm install victory-native
    
  2. Install peer dependencies:

    npm install react-native-svg
    
  3. Link the native module:

    npx react-native link react-native-svg
    
  4. Import and use Victory components in your React Native app:

    import { VictoryBar } from "victory-native";
    
    const MyComponent = () => (
      <VictoryBar data={[/* your data */]} />
    );
    

Competitor Comparisons

23,884

Redefined chart library built with React and D3

Pros of recharts

  • Larger community and more frequent updates
  • Extensive documentation and examples
  • Wider range of chart types and customization options

Cons of recharts

  • Limited to web applications (React.js), not suitable for React Native
  • Steeper learning curve due to more complex API

Code Comparison

recharts:

import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts';

<LineChart width={600} height={300} data={data}>
  <Line type="monotone" dataKey="pv" stroke="#8884d8" />
  <CartesianGrid stroke="#ccc" />
  <XAxis dataKey="name" />
  <YAxis />
</LineChart>

victory-native:

import { VictoryChart, VictoryLine, VictoryAxis } from "victory-native";

<VictoryChart>
  <VictoryLine data={data} x="name" y="pv" />
  <VictoryAxis />
  <VictoryAxis dependentAxis />
</VictoryChart>

Both libraries offer declarative APIs for creating charts, but recharts provides more built-in components for customization, while victory-native has a simpler API that works across React and React Native platforms.

19,429

🐯 visx | visualization components

Pros of visx

  • More flexible and customizable, allowing for greater control over chart components
  • Lighter weight with a modular approach, enabling smaller bundle sizes
  • Better performance due to its low-level nature and optimized rendering

Cons of visx

  • Steeper learning curve, requiring more setup and configuration
  • Less out-of-the-box functionality compared to Victory Native
  • Fewer pre-built chart types and components

Code Comparison

visx example:

import { BarGroup } from '@visx/shape';
import { Group } from '@visx/group';
import { AxisBottom } from '@visx/axis';

<svg width={width} height={height}>
  <Group top={margin.top} left={margin.left}>
    <BarGroup data={data} keys={keys} height={yMax} x0={x0} x0Scale={x0Scale} x1Scale={x1Scale} yScale={yScale} color={color} />
    <AxisBottom scale={x0Scale} top={yMax} />
  </Group>
</svg>

Victory Native example:

import { VictoryBar, VictoryChart, VictoryAxis, VictoryGroup } from 'victory-native';

<VictoryChart>
  <VictoryAxis />
  <VictoryGroup offset={20}>
    <VictoryBar data={data1} />
    <VictoryBar data={data2} />
  </VictoryGroup>
</VictoryChart>

Victory Native provides a more declarative API with pre-built components, while visx offers lower-level primitives for building custom visualizations.

108,427

Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:

Pros of d3

  • Highly flexible and customizable, allowing for complex and unique visualizations
  • Extensive documentation and large community support
  • Powerful data manipulation and scaling capabilities

Cons of d3

  • Steeper learning curve, especially for beginners
  • Requires more code to create basic charts and graphs
  • Not specifically designed for React Native, may require additional setup

Code Comparison

d3:

const svg = d3.select("body").append("svg")
    .attr("width", 400)
    .attr("height", 300);

svg.selectAll("rect")
    .data(data)
    .enter()
    .append("rect")
    .attr("x", (d, i) => i * 40)
    .attr("y", d => 300 - d * 10)
    .attr("width", 35)
    .attr("height", d => d * 10);

victory-native:

import { VictoryBar } from "victory-native";

<VictoryBar
  data={data}
  x="quarter"
  y="earnings"
/>

Victory Native provides a more straightforward API for creating charts in React Native, with less code required for basic visualizations. However, d3 offers greater flexibility and control over the final output, making it suitable for more complex and custom visualizations. The choice between the two depends on the specific project requirements, development environment, and the team's expertise.

64,568

Simple HTML5 Charts using the <canvas> tag

Pros of Chart.js

  • Wider browser compatibility and support for older versions
  • Extensive documentation and large community support
  • More built-in chart types and customization options out of the box

Cons of Chart.js

  • Limited native mobile support (primarily designed for web)
  • Steeper learning curve for complex customizations
  • Larger bundle size, which may impact performance in some scenarios

Code Comparison

Chart.js:

new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ['Red', 'Blue', 'Yellow'],
        datasets: [{
            label: 'My Dataset',
            data: [12, 19, 3]
        }]
    }
});

Victory Native:

<VictoryChart>
  <VictoryBar
    data={[
      {x: "Red", y: 12},
      {x: "Blue", y: 19},
      {x: "Yellow", y: 3}
    ]}
  />
</VictoryChart>

Key Differences

  • Chart.js uses a more imperative approach, while Victory Native employs a declarative, component-based structure
  • Victory Native is specifically designed for React Native, offering better integration with mobile apps
  • Chart.js provides more built-in chart types, while Victory Native focuses on customizability and composability

Both libraries have their strengths, with Chart.js excelling in web-based applications and Victory Native offering a more React-friendly approach for mobile development.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Victory Native

This repo has moved!

Victory Native is now named Victory Native XL.

For legacy versions of Victory Native and the core Victory project, please see this repo.

NPM DownloadsLast 30 Days