ios charts图表库的简单使用

因为这个charts库是用swift写的,但是还是很强大的,一般的功能几乎都可以实现,不过用起来有些地方还是不是很好找,原谅我的英语水平啦。。。。我根据平时用的简单描述下oc怎样使用charts。

首先集成,建议用pod 这样可以减少一些不必要的麻烦,pod 'Charts'
但是在podfile文件里面集成swift库的时候要用use_frameworks!
(use_frameworks!选项是告诉 CocoaPods 使用 framework 而不是静态库。这在 Swift 项目中是必选。
我们添加的那行(pod 'Charts')是让 CocoaPods 知道我们要用 Charts。)

然后创建桥接oc-swift桥接文件

创建桥接文件,随便创建一个swift文件即可,xcode会给你自动生成一个,然后在桥接文件里导入@import Charts;
即可,那边需要用到charts就将桥接文件导入即可

然后。。。重点来了

QQ20180502-162005.png

swift language version 一定要调成xcode对应的最高版本,如果不设置会报错的,然后你如果用pod 又导入别的框架的话charts又会报错,跑不起来了,我我发现只要pod install以后,之前对charts做的一些修改配置就会没了,每次都得重新设置一下,这点困惑了我好长时间。。。。关于配置网上有好多教程。基本配置搞完了。。。。。。(我发现只要pod install以后,之前对charts做的一些修改配置就会没了,每次都得重新设置一下)。

关于柱状图的使用

    BarChartView *barChartView = [[BarChartView alloc] init];
    barChartView.delegate = self;
    barChartView.frame = CGRectMake(0, 0, self.frame.size.width, 120);
    
    [self addSubview:barChartView];
  barChartView.backgroundColor = [UIColor clearColor];

    barChartView.noDataText = @"暂无数据";//没有数据时的文字提示
    barChartView.drawValueAboveBarEnabled = YES;//数值显示在柱形的上面还是下面
    barChartView.drawBarShadowEnabled = NO;//是否绘制柱形的阴影背景
    barChartView.userInteractionEnabled = NO;
    barChartView.scaleYEnabled = NO;//取消Y轴缩放
    barChartView.doubleTapToZoomEnabled = NO;//取消双击缩放
    barChartView.dragEnabled = YES;//启用拖拽图表
    barChartView.dragDecelerationEnabled = YES;//拖拽后是否有惯性效果
    barChartView.dragDecelerationFrictionCoef = 0.9;//拖拽后惯性效果的摩擦系数(0~1),数值越小,惯性越不明显
    
    ChartXAxis *xAxis = barChartView.xAxis;
    xAxis.valueFormatter = self;
    xAxis.axisLineWidth = 1;//设置X轴线宽
    xAxis.labelPosition = XAxisLabelPositionBottom;//X轴的显示位置,默认是显示在上面的
    xAxis.drawGridLinesEnabled = NO;//不绘制网格线
    //    xAxis.forceLabelsEnabled = YES;
    xAxis.labelTextColor = [UIColor TitleColor];//label文字颜色
    xAxis.labelFont = [UIFont systemFontOfSize:9];

    ChartYAxis *leftAxis = barChartView.leftAxis;//获取左边Y轴
    leftAxis.forceLabelsEnabled = NO;//不强制绘制制定数量的label
    leftAxis.inverted = NO;//是否将Y轴进行上下翻转
    leftAxis.axisLineWidth = 0;//Y轴线宽
    leftAxis.forceLabelsEnabled = YES;
    leftAxis.axisLineColor = [UIColor blackColor];//Y轴颜色
    leftAxis.axisMinimum = 0;
    
    leftAxis.gridLineDashLengths = @[@3.0f, @3.0f];//设置虚线样式的网格线
    leftAxis.gridColor = [UIColor colorWithRed:200/255.0f green:200/255.0f blue:200/255.0f alpha:1];//网格线颜色
    leftAxis.gridAntialiasEnabled = YES;//开启抗锯齿
    
    barChartView.rightAxis.enabled = NO;
    
    ChartLimitLine *limitLine = [[ChartLimitLine alloc] initWithLimit:80 label:@"限制线"];
    limitLine.lineWidth = 2;
    limitLine.lineColor = [UIColor greenColor];
    limitLine.lineDashLengths = @[@5.0f, @5.0f];//虚线样式
    limitLine.labelPosition = ChartLimitLabelPositionRightTop;//位置
    [leftAxis addLimitLine:limitLine];//添加到Y轴上
    leftAxis.drawLimitLinesBehindDataEnabled = YES;//设置限制线绘制在柱形图的后面
    
    barChartView.legend.enabled = NO;//不显示图例说明
    //    barChartView.descriptionText = @"";//不显示,就设为空字符串即可
    data = [self setData];
    
    //为柱形图提供数据
    barChartView.data = data;
//    [barChartView animateWithYAxisDuration:1.0f];
    
}
//为柱形图设置数据
- (BarChartData *)setData{
    
    int xVals_count = 7;//X轴上要显示多少条数据
    //X轴上面需要显示的数据
    NSMutableArray *xVals = [[NSMutableArray alloc] init];
    for (int i = 0; i < xVals_count; i++) {
        [xVals addObject:[NSString stringWithFormat:@"%d月", i+1]];

        self.xVals = xVals;
    }

    //对应Y轴上面需要显示的数据
    NSMutableArray *yVals = [[NSMutableArray alloc] init];
    for (int i = 0; i < xVals_count; i++) {

        double val = 23+2*i;
        BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithX:i y:val];

        [yVals addObject:entry];
    }


    //对应Y轴上面需要显示的数据
    NSMutableArray *yValsTwo = [[NSMutableArray alloc] init];
    for (int i = 0; i < xVals_count; i++) {

        double val = 29+2*i;
        BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithX:i y:val];

        [yValsTwo addObject:entry];
    }
    //创建BarChartDataSet对象,其中包含有Y轴数据信息,以及可以设置柱形样式
    BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithValues:yVals label:nil];
    set1.barBorderWidth =0;//边学宽
    set1.drawValuesEnabled = YES;//是否在柱形图上面显示数值
    set1.highlightEnabled = YES;//点击选中柱形图是否有高亮效果,(双击空白处取消选中)
    [set1 setColors:@[[UIColor colorWithHexString:@"#f9dbb6"]]];//设置柱形图颜色
    //    [set1 setColors:ChartColorTemplates.material];

    //创建BarChartDataSet对象,其中包含有Y轴数据信息,以及可以设置柱形样式
    BarChartDataSet *set2 = [[BarChartDataSet alloc] initWithValues:yValsTwo label:nil];
    
    set2.barBorderWidth =0;//边学宽
    set2.drawValuesEnabled = YES;//是否在柱形图上面显示数值
    set2.highlightEnabled = YES;//点击选中柱形图是否有高亮效果,(双击空白处取消选中)
    [set2 setColors:@[[UIColor colorWithHexString:@"#f5c383"]]];
    //将BarChartDataSet对象放入数组中
    NSMutableArray *dataSets = [[NSMutableArray alloc] init];
    [dataSets addObject:set1];
    [dataSets addObject:set2];
    //创建BarChartData对象, 此对象就是barChartView需要最终数据对象
    BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];
    //设置宽度   柱形之间的间隙占整个柱形(柱形+间隙)的比例
    [data setBarWidth:0.4];
    [data groupBarsFromX: -0.5 groupSpace: 0.2 barSpace: 0];

    [data setValueFont:[UIFont systemFontOfSize:9]];//文字字体
    [data setValueTextColor:[UIColor colorWithHexString:@"#999999"]];//文字颜色
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    //自定义数据显示格式  小数点形式
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];

    //    [formatter setPositiveFormat:@"#0.0"];
    ChartDefaultValueFormatter  *forma =
    [[ChartDefaultValueFormatter alloc] initWithFormatter:formatter]
    ;
    [data setValueFormatter:forma];
    
    return data;
}

//x标题
- (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis
{
    //    NSLog(@"%@",)
    return  self.xVals[(int)value];
}

QQ20180502-163117@2x.png
    numbewr.formatter.positiveSuffix = @" %";
    leftAxis.labelPosition = YAxisLabelPositionOutsideChart;//label位置
    leftAxis.labelTextColor = [UIColor subTitleTitleColor];//文字颜色
    leftAxis.labelFont = [UIFont systemFontOfSize:12.0f];//文字字体

//x标题
- (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis
{
    //    NSLog(@"%@",)
    return  self.xVals[(int)value];
}

这个是设置y轴显示单位的需要设置IChartAxisValueFormatter代理

想设置一个x坐标对应多个柱状图的话

    [data setBarWidth:0.4];
    [data groupBarsFromX: -0.5 groupSpace: 0.2 barSpace: 0];

想要图表可以左右滑动

//    [barChartView setVisibleXRangeMinimum:7];
    [barChartView setVisibleXRangeMaximum:7];
//    [barChartView moveViewToX:20];//延x轴移动的距离

好了,这是暂时我觉得有用的东西,后期还会继续更新的。。。。。。。欢迎点赞。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 成年一周。这几天也想明白了一些事。 从来就是这样的性格,喜欢一个人,是因为许多累计起来的小事,但是讨厌...
    粒历阅读 90评论 0 0
  • 在这样安静的夜晚,难得听不到一丝的吵闹。我终于耐着性子看完一个故事。 说实话,故事多多少少影响着我,也许,在很大情...
    水薇阅读 409评论 0 0
  • 大宝放学回家我正在厨房做饭,她进门换了鞋棉袄没来得及脱,背着的书包都没放下就兴奋的说着才灯谜的事情,并把奖品拿给我...
    经常不在线h阅读 189评论 0 0