Charts 3.0框架繪制-柱形圖表

使用Charts框架可以實(shí)現(xiàn)柱形圖踊餐、曲線圖、圓型圖等。

圖表

圖表

畫折線使用 LineChartView類深胳,用法與barChartView類型喊废。其他類圖標(biāo)可參考ChartsDemo里面的案例實(shí)現(xiàn)模燥,下載地址:https://github.com/danielgindi/Charts

一府阀、初始化

柱形圖使用Charts框架中的BarChartView類:

   _chartView = [[BarChartView alloc]init];
    //設(shè)置代理
    _chartView.delegate = self;//代理
    [self.view addSubview:_chartView];

二甘耿、設(shè)置圖表格式

1.基本樣式

_chartView.descriptionText = @"";//右下角描述
    _chartView.drawBarShadowEnabled = NO;//是否繪制陰影背景
    _chartView.drawValueAboveBarEnabled = YES;//數(shù)值顯示是否在條柱上面
    _chartView.noDataText = NSLocalizedString(@"加載中...", nil);//沒有數(shù)據(jù)時(shí)的顯示
    _chartView.rightAxis.enabled = NO;//不畫右邊坐標(biāo)軸
    _chartView.legend.enabled = NO;//不顯示圖例說明
    _chartView.dragEnabled = NO;//不啟用拖拽圖表

2.交互設(shè)置

_chartView.doubleTapToZoomEnabled = NO;//雙擊是否縮放
    _chartView.scaleXEnabled = NO;//X軸縮放
    _chartView.scaleYEnabled = NO;//Y軸縮放
    _chartView.pinchZoomEnabled = NO;//XY軸是否同時(shí)縮放

3.X軸樣式設(shè)置

ChartXAxis *xAxis = _chartView.xAxis;
    xAxis.labelPosition = XAxisLabelPositionBottom;//X軸的顯示位置
    xAxis.drawGridLinesEnabled = NO;//不繪制網(wǎng)格
    xAxis.labelFont = [UIFont systemFontOfSize:10.0f];//x數(shù)值字體大小
    xAxis.labelTextColor = [UIColor blackColor];//數(shù)值字體顏色
    DateFormatter *valueFormatter = [[DateFormatter alloc] init];//坐標(biāo)數(shù)值樣式
    xAxis.valueFormatter = valueFormatter;
    xAxis.labelCount = 7;

4.Y軸樣式設(shè)置

NSNumberFormatter *leftAxisFormatter = [[NSNumberFormatter alloc] init];//坐標(biāo)數(shù)值樣式
    leftAxisFormatter.maximumFractionDigits = 1;//Y軸坐標(biāo)最多為1位小數(shù)
    ChartYAxis *leftAxis = _chartView.leftAxis;
    leftAxis.drawZeroLineEnabled = YES;//從0開始繪畫
    leftAxis.axisMaximum = 60;//最大值
    leftAxis.axisMinimum = 0;//最小值
    leftAxis.valueFormatter = [[ChartDefaultAxisValueFormatter alloc] initWithFormatter:leftAxisFormatter];
    leftAxis.labelFont = [UIFont systemFontOfSize:10.f];//字體大小
    leftAxis.labelPosition = YAxisLabelPositionOutsideChart;//坐標(biāo)數(shù)值的位置
    leftAxis.labelCount = 8;//數(shù)值分割個(gè)數(shù)
    leftAxis.labelTextColor = [UIColor blackColor];//坐標(biāo)數(shù)值字體顏色
    leftAxis.spaceTop = 0.15;//最大值到頂部的范圍比
    leftAxis.drawGridLinesEnabled = YES;//是否繪制網(wǎng)格
    leftAxis.axisLineWidth = 1;//Y軸線寬
    leftAxis.axisLineColor = [UIColor blackColor];//Y軸顏色

    ChartYAxis *right = _chartView.rightAxis;
    right.drawLabelsEnabled = NO;//是否顯示Y軸坐標(biāo)
    right.drawGridLinesEnabled = NO;//不繪制網(wǎng)格

5.marker設(shè)置

點(diǎn)擊條柱時(shí)的數(shù)據(jù)展示扰她,ChartsDemo中包含BalloonMarker類

    BalloonMarker *marker = [[BalloonMarker alloc]
                             initWithColor: [UIColor colorWithWhite:180/255. alpha:1.0]
                             font: [UIFont systemFontOfSize:12.0]
                             textColor: UIColor.whiteColor
                             insets: UIEdgeInsetsMake(4.0, 4.0, 10.0, 4.0)];
    marker.chartView = _chartView;
    marker.minimumSize = CGSizeMake(40.f, 20.f);
    _chartView.marker = marker;

設(shè)置動(dòng)畫

    [_chartViewanimateWithYAxisDuration:1.0f];

ChartLimitLine類即可添加限制線兽掰,使用可參考ChartsDemo

三、data設(shè)置

- (void)setDataCount:(int)count {

    NSMutableArray *yVals = [[NSMutableArray alloc] init];
    for (int i = 0; i < count; i++) {
        int val = (double) (arc4random_uniform(60))+2;
        [yVals addObject:[[BarChartDataEntry alloc] initWithX:i y:val]];
    }

    BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithValues:yVals label:@"DataSet"];
    [set1 setColor:[UIColor grayColor]];//bar的顏色
    [set1 setValueTextColor: [UIColor lightGrayColor]];
//    [set1 setDrawValuesEnabled:NO];//是否在bar上顯示數(shù)值
//    [set1 setHighlightEnabled:NO];//是否點(diǎn)擊有高亮效果徒役,為NO是不會(huì)顯示marker的效果

    NSMutableArray *dataSets = [[NSMutableArray alloc] init];
    [dataSets addObject:set1];
    BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];
    [data setValueFont:[UIFont systemFontOfSize:10]];
    self.chartView.data = data;
    [self.chartView notifyDataSetChanged];

}

四孽尽、實(shí)現(xiàn)barChartView的代理方法

1.點(diǎn)擊選中時(shí)的代理

- (void)chartValueSelected:(ChartViewBase * __nonnull)chartView entry:(ChartDataEntry * __nonnull)entry highlight:(ChartHighlight * __nonnull)highlight{
    NSLog(@"chartValueSelected");
}

2.沒有選中時(shí)的代理

- (void)chartValueNothingSelected:(ChartViewBase * __nonnull)chartView{
    NSLog(@"chartValueNothingSelected");
}

3.捏合放大或縮小

- (void)chartScaled:(ChartViewBase * _Nonnull)chartView scaleX:(CGFloat)scaleX scaleY:(CGFloat)scaleY {
    NSLog(@"---chartScaled---scaleX:%g, scaleY:%g", scaleX, scaleY);
}

4.拖拽圖表時(shí)的代理方法

- (void)chartTranslated:(ChartViewBase * _Nonnull)chartView dX:(CGFloat)dX dY:(CGFloat)dY {
    NSLog(@"---chartTranslated---dX:%g, dY:%g", dX, dY);
}

效果:

效果圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市忧勿,隨后出現(xiàn)的幾起案子杉女,更是在濱河造成了極大的恐慌,老刑警劉巖鸳吸,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熏挎,死亡現(xiàn)場離奇詭異,居然都是意外死亡晌砾,警方通過查閱死者的電腦和手機(jī)坎拐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來养匈,“玉大人哼勇,你說我怎么就攤上這事∨缓酰” “怎么了积担?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長猬仁。 經(jīng)常有香客問我帝璧,道長,這世上最難降的妖魔是什么逐虚? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮谆膳,結(jié)果婚禮上叭爱,老公的妹妹穿的比我還像新娘。我一直安慰自己漱病,他們只是感情好买雾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布把曼。 她就那樣靜靜地躺著,像睡著了一般漓穿。 火紅的嫁衣襯著肌膚如雪嗤军。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天晃危,我揣著相機(jī)與錄音叙赚,去河邊找鬼。 笑死僚饭,一個(gè)胖子當(dāng)著我的面吹牛震叮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鳍鸵,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼苇瓣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了偿乖?” 一聲冷哼從身側(cè)響起击罪,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贪薪,沒想到半個(gè)月后媳禁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡古掏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年损话,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片槽唾。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丧枪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庞萍,到底是詐尸還是另有隱情拧烦,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布钝计,位于F島的核電站恋博,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏私恬。R本人自食惡果不足惜债沮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望本鸣。 院中可真熱鬧疫衩,春花似錦、人聲如沸荣德。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鲤拿,卻和暖如春假褪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背近顷。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工生音, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人幕庐。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓久锥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親异剥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瑟由,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 首先看一下最終要實(shí)現(xiàn)的效果: 一、初始化barChartView 繪制柱形圖需要用到BarChartView這個(gè)類...
    jianshu_wl閱讀 31,538評(píng)論 125 133
  • 【編者按】本文作者 Joyce Echessa 是渥合數(shù)位服務(wù)創(chuàng)辦人,畢業(yè)于臺(tái)灣大學(xué)督怜,近年來專注于協(xié)助客戶進(jìn)行 A...
    OneAPM閱讀 3,683評(píng)論 9 15
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理殴瘦,服務(wù)發(fā)現(xiàn),斷路器号杠,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 聽說過這本書還是在知乎上看到的姨蟋,采銅本人就是知乎大神屉凯,對(duì)于很多問題回答的都很有見解,看到書名《精進(jìn):如何成為一個(gè)很...
    蘇二讀書閱讀 2,481評(píng)論 3 22
  • 午睡醒來刷微博的時(shí)候眼溶,突然看到這樣一句話:“我是你一顆糖就能收買的女孩悠砚,也是你十座金山都換不回的姑娘√梅桑” 這是在某...
    石頭姑娘133閱讀 925評(píng)論 0 9