Как нарисовать круговую диаграмму в React Native

Как нарисовать кольцевую диаграмму? Я пробовал использовать диаграммы реагирования-родные-подаренные

мне нужна анимация для заполнения диаграммы. Есть ли какая-нибудь библиотека, которая может решить эту проблему? кто-нибудь помогите мне сделать это, я хочу именно так с анимацией

какой тип анимации в кольцевой диаграмме вы хотите?

ABDULLAH 28.06.2024 08:55

@ABDULLAH мне нравится, как круглые индикаторы выполнения заполняются анимацией, моя круговая диаграмма должна заполниться анимацией

Yuva 28.06.2024 09:02
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
2
106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы также можете использовать другие библиотеки для анимации циклических процессов. вашей кольцевой диаграммы вы можете настроить анимацию и изменить ее это тоже.

используйте библиотеки ниже

import { View, StyleSheet, Dimensions, Animated, Easing } from 'react-native';
import Svg, { G, Circle } from 'react-native-svg';

и вы можете отрегулировать пончик в соответствии с вашими потребностями

const { width } = Dimensions.get('window');
const AnimatedCircle = Animated.createAnimatedComponent(Circle);

const DonutChart = ({ percentage }) => {
  const radius = width / 6;
  const strokeWidth = 40;
  const circumference = 2 * Math.PI * radius;
  const animation = useRef(new Animated.Value(0)).current;

  const animatedProps = {
    strokeDashoffset: animation.interpolate({
      inputRange: [0, 1],
      outputRange: [circumference, circumference - (circumference * percentage) / 100],
    }),
  };

  useEffect(() => {
    Animated.timing(animation, {
      toValue: 1,
      duration: 1500,
      easing: Easing.out(Easing.quad),
      useNativeDriver: true,
    }).start();
  }, [percentage]);

и отрегулируйте SVG с помощью высоты и ширины viewBox

return (
    <View >
      <Svg width = {radius * 2 + strokeWidth} height = {radius * 2 + strokeWidth} viewBox = {`0 0 ${radius * 2 + strokeWidth} ${radius * 2 + strokeWidth}`}>
        <G rotation = "-90" origin = {`${radius + strokeWidth / 2}, ${radius + strokeWidth / 2}`}>
          <Circle
            cx = {radius + strokeWidth / 2}
            cy = {radius + strokeWidth / 2}
            r = {radius}
            stroke = "#e6e6e6"
            strokeWidth = {strokeWidth}
            fill = "none"
          />
          <AnimatedCircle
            cx = {radius + strokeWidth / 2}
            cy = {radius + strokeWidth / 2}
            r = {radius}
            stroke = "green"
            strokeWidth = {strokeWidth}
            fill = "none"
            strokeDasharray = {circumference}
            {...animatedProps}
          />
        </G>
      </Svg>
    </View>
  );

после этого установите свой процент прогресса

<View style = {{ flex: 1 }}>
      <DonutChart percentage = {90} />
    </View>

также я поделился полным кодом ссылки на выставочную закуску ниже и изменил ее согласно вашим потребностям

Круговая диаграмма выставки Ссылка

это работает, но мне нужно несколько цветов, потому что я получаю процент от API, например [20,30,10,50], вот так, и можно добавить текст 20% 30% над цветами?

Yuva 28.06.2024 10:40

Я обновил код на выставке, пожалуйста, посетите ссылку, упомянутую выше в ответе.

ABDULLAH 28.06.2024 12:44

да, но зеленый цвет не заполнен полностью, между красным и зеленым есть пространство

Yuva 28.06.2024 13:00

установите процент на 100

ABDULLAH 28.06.2024 13:02

@ АБДУЛЛА, давайте возьмем общий процент равным 100. Зеленый должен быть заполнен 40% круга, синий должен быть 30% круга, красный должен быть заполнен 10% круг, весь круг заполнен цветом без пустого пространства. Не могли бы вы мне помочь? этот?

Yuva 28.06.2024 13:06

Проверьте ссылку на выставку сейчас

ABDULLAH 28.06.2024 13:09

Давайте продолжим обсуждение в чате.

Yuva 28.06.2024 13:18

Другие вопросы по теме