使用 ios-charts 库对条形图中的列进行分组,数据条目的数量可变
Grouped columns in barchart with variable count of data entries using ios-charts library
我正在尝试构建条形图,其中 x 值的 y 值数量可变(例如,对于 x=1,我想要 3 个数据条目,对于 x=2,我想要 1 个数据条目等) .
使用 ios-图表,问题是图表出于某种原因错误地放置了条形图。为我的图表使用以下数据源:
BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValues:@[@1] xIndex:0];
BarChartDataEntry *entry2 = [[BarChartDataEntry alloc] initWithValues:@[@4] xIndex:0];
BarChartDataSet *set = [[BarChartDataSet alloc] initWithYVals:@[entry,entry2] label:@"test1"];
BarChartDataEntry *entry3 = [[BarChartDataEntry alloc] initWithValues:@[@6] xIndex:1];
BarChartDataEntry *entry4 = [[BarChartDataEntry alloc] initWithValues:@[@7] xIndex:1];
BarChartDataSet *set2 = [[BarChartDataSet alloc] initWithYVals:@[entry3,entry4] label:@"test2"];
BarChartDataEntry *entry5 = [[BarChartDataEntry alloc] initWithValues:@[@3] xIndex:2];
BarChartDataSet *set3 = [[BarChartDataSet alloc] initWithYVals:@[entry5] label:@"test3"];
NSArray *tstArr = @[set, set2, set3];
//x-values
<__NSArrayM 0x7a897960>(
02.júla.15,
23.júla.15,
24.júla.15
)
BarChartData *data = [[BarChartData alloc] initWithXVals:xVals dataSets:tstArr];
生成以下 HorizontalBarChart:
查看文档,我什至不确定是否可以使用 ios-图表。也许自动布局与它有关。如果有使用该库经验的人可以做出贡献,我将很高兴。或者,我可能不得不使用 Core plot。
编辑:我注意到我的逻辑是错误的,我创建了堆叠条而不是多个。我将代码更改为
BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValues:@[@1] xIndex:0];
BarChartDataEntry *entry2 = [[BarChartDataEntry alloc] initWithValues:@[@4] xIndex:0];
BarChartDataSet *set = [[BarChartDataSet alloc] initWithYVals:@[entry] label:@"test1"];
BarChartDataSet *set2 = [[BarChartDataSet alloc] initWithYVals:@[entry2] label:@"test2"];
BarChartDataEntry *entry3 = [[BarChartDataEntry alloc] initWithValues:@[@6] xIndex:1];
BarChartDataEntry *entry4 = [[BarChartDataEntry alloc] initWithValues:@[@7] xIndex:1];
BarChartDataSet *set3 = [[BarChartDataSet alloc] initWithYVals:@[entry3] label:@"test3"];
BarChartDataSet *set4 = [[BarChartDataSet alloc] initWithYVals:@[entry4] label:@"test4"];
所以我有单个 x 点的多个数据集。这工作得更好一些,但图表仍然不理解我的数据源并将所有内容放入单个 x 点(注意黑色选择的列)
这是一个错误,我想你已经在 github 上打开了这个问题,对吧?无论如何,您应该能够继续修复:https://github.com/danielgindi/ios-charts/pull/248.
如果一组中有两个柱,则应该只有两个dataSet,而不是4个,每个dataSet有两个dataEntries。您使用的是 4 个数据集,它导致每个 x 轴区域留下更多 space,这就是它不居中的原因。
我正在尝试构建条形图,其中 x 值的 y 值数量可变(例如,对于 x=1,我想要 3 个数据条目,对于 x=2,我想要 1 个数据条目等) .
使用 ios-图表,问题是图表出于某种原因错误地放置了条形图。为我的图表使用以下数据源:
BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValues:@[@1] xIndex:0];
BarChartDataEntry *entry2 = [[BarChartDataEntry alloc] initWithValues:@[@4] xIndex:0];
BarChartDataSet *set = [[BarChartDataSet alloc] initWithYVals:@[entry,entry2] label:@"test1"];
BarChartDataEntry *entry3 = [[BarChartDataEntry alloc] initWithValues:@[@6] xIndex:1];
BarChartDataEntry *entry4 = [[BarChartDataEntry alloc] initWithValues:@[@7] xIndex:1];
BarChartDataSet *set2 = [[BarChartDataSet alloc] initWithYVals:@[entry3,entry4] label:@"test2"];
BarChartDataEntry *entry5 = [[BarChartDataEntry alloc] initWithValues:@[@3] xIndex:2];
BarChartDataSet *set3 = [[BarChartDataSet alloc] initWithYVals:@[entry5] label:@"test3"];
NSArray *tstArr = @[set, set2, set3];
//x-values
<__NSArrayM 0x7a897960>(
02.júla.15,
23.júla.15,
24.júla.15
)
BarChartData *data = [[BarChartData alloc] initWithXVals:xVals dataSets:tstArr];
生成以下 HorizontalBarChart:
查看文档,我什至不确定是否可以使用 ios-图表。也许自动布局与它有关。如果有使用该库经验的人可以做出贡献,我将很高兴。或者,我可能不得不使用 Core plot。
编辑:我注意到我的逻辑是错误的,我创建了堆叠条而不是多个。我将代码更改为
BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValues:@[@1] xIndex:0];
BarChartDataEntry *entry2 = [[BarChartDataEntry alloc] initWithValues:@[@4] xIndex:0];
BarChartDataSet *set = [[BarChartDataSet alloc] initWithYVals:@[entry] label:@"test1"];
BarChartDataSet *set2 = [[BarChartDataSet alloc] initWithYVals:@[entry2] label:@"test2"];
BarChartDataEntry *entry3 = [[BarChartDataEntry alloc] initWithValues:@[@6] xIndex:1];
BarChartDataEntry *entry4 = [[BarChartDataEntry alloc] initWithValues:@[@7] xIndex:1];
BarChartDataSet *set3 = [[BarChartDataSet alloc] initWithYVals:@[entry3] label:@"test3"];
BarChartDataSet *set4 = [[BarChartDataSet alloc] initWithYVals:@[entry4] label:@"test4"];
所以我有单个 x 点的多个数据集。这工作得更好一些,但图表仍然不理解我的数据源并将所有内容放入单个 x 点(注意黑色选择的列)
这是一个错误,我想你已经在 github 上打开了这个问题,对吧?无论如何,您应该能够继续修复:https://github.com/danielgindi/ios-charts/pull/248.
如果一组中有两个柱,则应该只有两个dataSet,而不是4个,每个dataSet有两个dataEntries。您使用的是 4 个数据集,它导致每个 x 轴区域留下更多 space,这就是它不居中的原因。