0

我需要在我正在做的 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 是我在开发中使用的自定义方法。

但它给出的图表如下:

我从我的实现中得到什么 - (UIView *)barChartView:(JBBarChartView *)barChartView barViewAtIndex:(NSUInteger)index;  方法

但我真正想使用 JBChartView 库绘制如下:

预期图

任何帮助都会以感激和尊重的态度接受,但不建议使用任何其他库来完成这项工作。我喜欢 JBChartView 库的简单性。:-)

提前致谢!

4

1 回答 1

1

据我所知,使用标准方式这是不可能的,但可以解决。见https://github.com/Jawbone/JBChartView/issues/139

于 2015-07-24T11:36:15.207 回答