我正在尝试构建条形图,其中x值的y值可变(例如,对于x = 1,我想要有3个数据条目,对于x = 2 1数据条目等)。
使用ios-charts,问题是该图表由于某种原因错误地放置了条形图。使用我的图表的以下数据源:
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-charts。也许自动布局与它有关。如果有经验的人可以贡献,我会很高兴。或者,我可能不得不使用核心情节。
编辑:我发现我的逻辑错了,我创建了堆叠条而不是多条。我将代码更改为 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-point的多个数据集。这样可以更好一点,但图表仍然无法理解我的数据源并将所有内容放入单个x点(请注意黑色选定的列)
答案 0 :(得分:1)
这是一个错误,而且,我认为你已经在github上打开了这个问题,对吧?无论如何,您应该能够继续修复:https://github.com/danielgindi/ios-charts/pull/248。
如果一个组中有两个条,则应该只有两个dataSets,而不是4个,每个dataSet有两个dataEntries。你使用的是4个数据集,它会为每个x轴区域留下更多的空间,这就是为什么它没有居中。