美文网首页iOS
OC调用Charts绘制图表--BarChartView

OC调用Charts绘制图表--BarChartView

作者: 咖啡bu加糖 | 来源:发表于2016-11-16 09:54 被阅读2466次

多系列柱状图,这里基本的就不说了,接着之前的文章,直接写到数据赋值的处理:

    NSArray *array = @[@"17655.2", @"20939.38", @"36271.65", @"30353.48", @"26874.45", @"23715.13", @"24367.3", @"23408.85", @"24016.9", @"31424.75", @"26744.25", @"26307.8"];
    NSArray *array1 = @[@"17077.85", @"18197.63", @"29818.3", @"26785.3", @"26273.75", @"22973.3", @"23457.4", @"25208.25", @"27054.9", @"32088.15", @"24960.65", @"31157.2"];
    NSArray *array2= @[@"20155.2", @"19874.18", @"32059.85", @"25786.1", @"28643.8", @"26407.05", @"23894.45", @"23832.1", @"28999.18", @"35795.8", @"16169.15", @"--"];
    NSMutableArray *valueArray = [NSMutableArray array];
    [valueArray addObject:array];
    [valueArray addObject:array1];
    [valueArray addObject:array2];

    double dataSetMin = 0;
    double dataSetMax = 0;
    float groupSpace = 0.25f;
    float barSpace = 0.0f;
    float barWidth = 0.25f;
    
    NSMutableArray *dataSets = [NSMutableArray array];
    
    for (int i = 0; i < valueArray.count; i++) {
        NSMutableArray *yVals = [NSMutableArray array];
        BarChartDataSet *set = nil;
        NSArray *array = valueArray[i];
        for (int j = 0; j < array.count; j++)
        {
            double val = [array[j] doubleValue];
            dataSetMax = MAX(val, dataSetMax);
            dataSetMin = MIN(val, dataSetMin);
            [yVals addObject:[[BarChartDataEntry alloc]
                              initWithX:j
                              y:val]];
            set = [[BarChartDataSet alloc] initWithValues:yVals label:[NSString stringWithFormat:@"第%d个图例",i]];
            [set setColor:self.colorArray[i]];
            set.valueColors = @[self.colorArray[i]];
        }
        [dataSets addObject:set];
    }
    double diff = dataSetMax - dataSetMin;
    
    if (dataSetMax == 0 && dataSetMin == 0) {
        dataSetMax = 100.0;
        dataSetMin = -10.0;
    } else {
        dataSetMax = (dataSetMax + diff * 0.2);
        dataSetMin = (dataSetMin - diff * 0.1);
    }
    self.barChartView.leftAxis.axisMaximum = dataSetMax;
    self.barChartView.leftAxis.axisMinimum = 0;
    
    BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];
    [data setValueFont:[UIFont systemFontOfSize:10.f]];
    data.barWidth = barWidth;
    _barChartView.xAxis.axisMinimum = -0.1;
    _barChartView.xAxis.axisMaximum = 0 + [data groupWidthWithGroupSpace:groupSpace barSpace: barSpace] * 12;
    [data groupBarsFromX: 0 groupSpace: groupSpace barSpace: barSpace];
    
    _barChartView.data = nil;
    _barChartView.data = data;
    [self.barChartView animateWithXAxisDuration:0.25f];

效果图如下:


多系列柱状图.png

多系列柱状图主要的几行代码


float groupSpace = 0.25f;
float barSpace = 0.0f;
float barWidth = 0.25f;
// (barSpace + barWidth) * 系列数 + groupSpace = 1.00 -> interval per "group"
groupSpace 
groupSpace -- 组的间隔
barSpace -- 每组之间柱状图的间隔
barWidth -- 每组柱状图的宽度

单系列的柱状图更简单,只需要设置barwidth就可以了 [data groupBarsFromX: 0 groupSpace: groupSpace barSpace: barSpace] 这句话可以不要,在折线和混合图表里面也有单系列的柱状图。

相关文章

网友评论

  • changeWong:请教一下,Y轴数据它要求是传入Double类型的,你是怎么处理为显示Int类型的?在线等,急!!!
    changeWong:@咖啡bu加糖 能说的详细点吗?我不太懂这个类库,用什么代理去处理?
    咖啡bu加糖:@changeWong 代理处理
  • 6a40e57ba3d0:博主能说下X轴文字是怎么写上去的?我这边设置了会崩溃,能否有demo可以参考一下?不胜感激。。。。
    咖啡bu加糖:@取个好名不容易 官网里面有的
  • 92062ddc1700:博主能说一下,下面的月份怎么设置到中间的吗?
    咖啡bu加糖:@清水如许 有个centerlabel的属性
  • 流水孤村:请问一下,下面的月份怎么设置的??
  • 流水孤村:能给个demo吗
  • 飞翔de小苹果:怎么获取点击的柱形图是第几个和对应的数据?
    咖啡bu加糖:@飞翔de小苹果 代理和tableview一样
  • 你的胡霸霸:能给出源码吗/? 我想看看你X轴显示和竖着的分割线去除, 我这里一直去除不了,还有X轴在设置xAxis.granularity = 1.0; 会有崩溃,, 急急急
  • 你的胡霸霸:你好大神, 想问一下, 每一组的竖着的分割线是怎么去掉的
    咖啡bu加糖:@MrH_60ea 看看demo就解决了 很全了
    你的胡霸霸:@咖啡bu加糖 好的, 还有, Y轴的数据一样的时候, 这一组数据的Y轴上面的lab显示只有一个, 并且居中
    咖啡bu加糖:@MrH_60ea 看初始化类工具有注释
  • 宋进锋:兄弟,柱状图 上边 圆角(半圆),柱状的渐变填充色 你弄过没
    Y_3c23:兄弟,你弄出来了吗
  • ttdiOS:BarChartView,可以只滑动,不缩放?当x轴数据多时,只滑动x轴,而不是先缩放后才可以滑动的,柱状条的宽度定值
    梅梅酱:@ttdiOS 能大致说一下思路吗? 我找了两天了 没找到方法 :sob:
    ttdiOS:@梅梅酱 是的
    梅梅酱:亲 你实现这个需求了吗??求助
  • 马拉古_:请问X轴的1月 2月....怎么设置的,我不知道x轴怎么赋值
    咖啡bu加糖:@奔跑_D_古力 demo string for value 那个就是代理
    马拉古_:@李大宝是个小胖子 没找到相应的代理方法在charts的demo里面,能否告知一下 BarChartData ?BarChartDataSet? BarChartView? 这三个里面都没找到代理方法啊
    咖啡bu加糖:@奔跑_D_古力 代理回调实现的,你看看demo有的
  • 95d1d82209b7:我刚要用AFN你就有封装,刚要用Charts你就来教程,我们项目里正要用的看你教程都搞定,啥也不说了打赏支持!爱死你了
    咖啡bu加糖:@致命前奏 我愿意当小弟,工资可观就好:heart_eyes:
    95d1d82209b7:@李大宝是个小胖子 还是我给你当小弟吧!哈哈
    咖啡bu加糖:@致命前奏 谢谢老板,用的开心就好,要不你跟你们老板说说把我招到你们公司吧,我给你当小弟吧

本文标题:OC调用Charts绘制图表--BarChartView

本文链接:https://www.haomeiwen.com/subject/nizlpttx.html