您好,我想实现这种图表与2个数据集
通过使用react-native-svg-charts

我的数据是这样的
const data1 = [
{label: 'bad', svg: {fill: '#E55300'}, value: 5},
{label: 'marginal', svg: {fill: '#EB742F'}, value: 10},
{label: 'fair', svg: {fill: '#F5A77A'}, value: 20},
{label: 'good', svg: {fill: '#9BD4DE'}, value: 30},
{label: 'satisfactory', svg: {fill: '#1D8091'}, value: 10},
];
const data2 = [
{label: 'bad', svg: {fill: '#E55300'}, value: 15},
{label: 'marginal', svg: {fill: '#EB742F'}, value: 21},
{label: 'fair', svg: {fill: '#F5A77A'}, value: 32},
{label: 'good', svg: {fill: '#9BD4DE'}, value: 44},
{label: 'satisfactory', svg: {fill: '#1D8091'}, value: 75},
];
const data3 = [
{label: 'bad', svg: {fill: '#E55300'}, value: 50},
{label: 'marginal', svg: {fill: '#EB742F'}, value: 81},
{label: 'fair', svg: {fill: '#F5A77A'}, value: 77},
{label: 'good', svg: {fill: '#9BD4DE'}, value: 33},
{label: 'satisfactory', svg: {fill: '#1D8091'}, value: 21},
];我将它们分组为一个数据,如下所示
const barDataY = [
{
data: data1,
svg: {
stroke: 'red',
strokeWidth: 2,
},
},
{
data: data2,
svg: {
stroke: 'dodgerblue',
strokeWidth: 2,
},
},
{
data: data3,
svg: {
stroke: 'grey',
strokeWidth: 2,
},
},
];我的图表看起来像这样,而不是得到我想要的图表

那么我如何根据数据集对它们进行分组呢?
下面是我的完整代码
import React, {useEffect} from 'react';
import {View, StyleSheet} from 'react-native';
import {BarChart, Grid, YAxis, XAxis} from 'react-native-svg-charts';
import {
widthPercentageToDP as wp,
heightPercentageToDP as hp,
} from 'react-native-responsive-screen';
import Colors from './App/Configs/Colors';
const data1 = [
{label: 'bad', svg: {fill: '#E55300'}, value: 5},
{label: 'marginal', svg: {fill: '#EB742F'}, value: 10},
{label: 'fair', svg: {fill: '#F5A77A'}, value: 20},
{label: 'good', svg: {fill: '#9BD4DE'}, value: 30},
{label: 'satisfactory', svg: {fill: '#1D8091'}, value: 10},
];
const data2 = [
{label: 'bad', svg: {fill: '#E55300'}, value: 15},
{label: 'marginal', svg: {fill: '#EB742F'}, value: 21},
{label: 'fair', svg: {fill: '#F5A77A'}, value: 32},
{label: 'good', svg: {fill: '#9BD4DE'}, value: 44},
{label: 'satisfactory', svg: {fill: '#1D8091'}, value: 75},
];
const data3 = [
{label: 'bad', svg: {fill: '#E55300'}, value: 50},
{label: 'marginal', svg: {fill: '#EB742F'}, value: 81},
{label: 'fair', svg: {fill: '#F5A77A'}, value: 77},
{label: 'good', svg: {fill: '#9BD4DE'}, value: 33},
{label: 'satisfactory', svg: {fill: '#1D8091'}, value: 21},
];
const SummaryBarChart = ({barData, xData, bardata2}) => {
const contentInset = {top: 50, bottom: 20};
let mainData = [{data: bardata2}, {data: barData}];
const barDataY = [
{
data: data1,
svg: {
stroke: 'red',
strokeWidth: 2,
},
},
{
data: data2,
svg: {
stroke: 'dodgerblue',
strokeWidth: 2,
},
},
{
data: data3,
svg: {
stroke: 'grey',
strokeWidth: 2,
},
},
];
return (
<View style={styles.barcharContainer}>
<View style={{width: wp('80%')}}>
<View style={{height: 200, flexDirection: 'row'}}>
<BarChart
contentInset={contentInset}
style={{height: 200, width: wp('80%')}}
data={barDataY}
numberOfTicks={5}
yAccessor={({item}) => {
console.log(item);
return item.value;
}}>
<Grid></Grid>
</BarChart>
</View>
</View>
</View>
);
};
export default SummaryBarChart;发布于 2020-11-07 21:52:39
我已经通过转换数据解决了这个问题,所以bardataY看起来像这样
const barDataY = [
{
data: badData,
},
data: goodData,
},
data: etcdata..,
},
];https://stackoverflow.com/questions/64714848
复制相似问题