使用 JBChartView 库的分组条形图
Grouped Bar chart with JBChartView library
我需要在我正在做的 iOS 项目中绘制分组条形图。所以我使用的 iOS 第三方库是来自 Jawbone 的 JBChartView。
根据我在这方面的研究中获得的知识,我发现库中没有任何已经支持的方法。
但是我尝试做如下事情:
- (NSUInteger)numberOfBarsInBarChartView:(JBBarChartView *)barChartView
{
return [self.chartLegend count]; // number of bars in chart "BB", "HB", "FB", "RO"
}
- (CGFloat)barChartView:(JBBarChartView *)barChartView heightForBarViewAtIndex:(NSUInteger)index
{
CGFloat height = (isnan((([[chartData objectAtIndex:index] doubleValue]/total)*100))) ? 0.0 : (([[chartData objectAtIndex:index] doubleValue]/total)*100);
NSLog(@"height : %f", height);
return height;
}
- (UIView *)barChartView:(JBBarChartView *)barChartView barViewAtIndex:(NSUInteger)index {
CGFloat height = (isnan((([[chartData objectAtIndex:index] doubleValue]/total)*100)))
? 0.0
: (([[chartData objectAtIndex:index] doubleValue]/total)*100);
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, height)];
[view setBackgroundColor:[UIColor grayColor]];
UIView *firstHalf = [[UIView alloc] initWithFrame:CGRectMake(0, height, 25, height)];
[firstHalf setBackgroundColor:[UIColor redColor]];
UIView *secondHalf = [[UIView alloc] initWithFrame:CGRectMake(25, height, 25, height/2)];
if (index == 0) {
[secondHalf setBackgroundColor:UIColorFromRGB(0xF15854)];
} else if (index == 1) {
[secondHalf setBackgroundColor:UIColorFromRGB(0x5DA5DA)];
} else if (index == 2) {
[secondHalf setBackgroundColor:UIColorFromRGB(0xFAA43A)];
} else if (index == 3) {
[secondHalf setBackgroundColor:UIColorFromRGB(0x60BD68)];
}
[view addSubview:firstHalf];
[view addSubview:secondHalf];
return view;
}
注意:请忽略我为确定红色和其他不同颜色条的高度而输入的数据值。而 UIColorFromRGB 是我在开发中使用的自定义方法。
但它给出的图形如下:
但是我真正想用JBChartView库画的是这样的:
我们将满怀感激和尊重地接受任何帮助,但不建议使用任何其他库来完成此任务。我喜欢 JBChartView 库的简单性。 :-)
提前致谢!
据我所知,使用标准方法无法做到这一点,但可以解决。参见 https://github.com/Jawbone/JBChartView/issues/139
我需要在我正在做的 iOS 项目中绘制分组条形图。所以我使用的 iOS 第三方库是来自 Jawbone 的 JBChartView。 根据我在这方面的研究中获得的知识,我发现库中没有任何已经支持的方法。
但是我尝试做如下事情:
- (NSUInteger)numberOfBarsInBarChartView:(JBBarChartView *)barChartView
{
return [self.chartLegend count]; // number of bars in chart "BB", "HB", "FB", "RO"
}
- (CGFloat)barChartView:(JBBarChartView *)barChartView heightForBarViewAtIndex:(NSUInteger)index
{
CGFloat height = (isnan((([[chartData objectAtIndex:index] doubleValue]/total)*100))) ? 0.0 : (([[chartData objectAtIndex:index] doubleValue]/total)*100);
NSLog(@"height : %f", height);
return height;
}
- (UIView *)barChartView:(JBBarChartView *)barChartView barViewAtIndex:(NSUInteger)index {
CGFloat height = (isnan((([[chartData objectAtIndex:index] doubleValue]/total)*100)))
? 0.0
: (([[chartData objectAtIndex:index] doubleValue]/total)*100);
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, height)];
[view setBackgroundColor:[UIColor grayColor]];
UIView *firstHalf = [[UIView alloc] initWithFrame:CGRectMake(0, height, 25, height)];
[firstHalf setBackgroundColor:[UIColor redColor]];
UIView *secondHalf = [[UIView alloc] initWithFrame:CGRectMake(25, height, 25, height/2)];
if (index == 0) {
[secondHalf setBackgroundColor:UIColorFromRGB(0xF15854)];
} else if (index == 1) {
[secondHalf setBackgroundColor:UIColorFromRGB(0x5DA5DA)];
} else if (index == 2) {
[secondHalf setBackgroundColor:UIColorFromRGB(0xFAA43A)];
} else if (index == 3) {
[secondHalf setBackgroundColor:UIColorFromRGB(0x60BD68)];
}
[view addSubview:firstHalf];
[view addSubview:secondHalf];
return view;
}
注意:请忽略我为确定红色和其他不同颜色条的高度而输入的数据值。而 UIColorFromRGB 是我在开发中使用的自定义方法。
但它给出的图形如下:
但是我真正想用JBChartView库画的是这样的:
我们将满怀感激和尊重地接受任何帮助,但不建议使用任何其他库来完成此任务。我喜欢 JBChartView 库的简单性。 :-)
提前致谢!
据我所知,使用标准方法无法做到这一点,但可以解决。参见 https://github.com/Jawbone/JBChartView/issues/139