Как нарисовать кольцевую диаграмму? Я пробовал использовать диаграммы реагирования-родные-подаренные
мне нужна анимация для заполнения диаграммы. Есть ли какая-нибудь библиотека, которая может решить эту проблему? кто-нибудь помогите мне сделать это, я хочу именно так с анимацией
@ABDULLAH мне нравится, как круглые индикаторы выполнения заполняются анимацией, моя круговая диаграмма должна заполниться анимацией
Вы также можете использовать другие библиотеки для анимации циклических процессов. вашей кольцевой диаграммы вы можете настроить анимацию и изменить ее это тоже.
используйте библиотеки ниже
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% над цветами?
Я обновил код на выставке, пожалуйста, посетите ссылку, упомянутую выше в ответе.
да, но зеленый цвет не заполнен полностью, между красным и зеленым есть пространство
установите процент на 100
@ АБДУЛЛА, давайте возьмем общий процент равным 100. Зеленый должен быть заполнен 40% круга, синий должен быть 30% круга, красный должен быть заполнен 10% круг, весь круг заполнен цветом без пустого пространства. Не могли бы вы мне помочь? этот?
Проверьте ссылку на выставку сейчас
Давайте продолжим обсуждение в чате.
какой тип анимации в кольцевой диаграмме вы хотите?