亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS使用Charts框架繪制柱形圖

2020-07-26 03:00:07
字體:
來源:轉載
供稿:網友

首先看一下最終要實現的效果:

最終效果

一、初始化barChartView

繪制柱形圖需要用到BarChartView這個類,下面是初始化代碼:

self.barChartView = [[BarChartView alloc] init];self.barChartView.delegate = self;//設置代理[self.view addSubview:self.barChartView];[self.barChartView mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(self.view.bounds.size.width-20, 300)); make.center.mas_equalTo(self.view);}];

二、設置barChartView的外觀樣式

1.基本樣式

self.barChartView.backgroundColor = [UIColor colorWithRed:230/255.0f green:253/255.0f blue:253/255.0f alpha:1];self.barChartView.noDataText = @"暫無數據";//沒有數據時的文字提示self.barChartView.drawValueAboveBarEnabled = YES;//數值顯示在柱形的上面還是下面self.barChartView.drawHighlightArrowEnabled = NO;//點擊柱形圖是否顯示箭頭self.barChartView.drawBarShadowEnabled = NO;//是否繪制柱形的陰影背景

2.barChartView的交互設置

self.barChartView.scaleYEnabled = NO;//取消Y軸縮放self.barChartView.doubleTapToZoomEnabled = NO;//取消雙擊縮放self.barChartView.dragEnabled = YES;//啟用拖拽圖表self.barChartView.dragDecelerationEnabled = YES;//拖拽后是否有慣性效果self.barChartView.dragDecelerationFrictionCoef = 0.9;//拖拽后慣性效果的摩擦系數(0~1),數值越小,慣性越不明顯

3.設置barChartView的X軸樣式

首先需要先獲取到barChartView的X軸,然后進行設置.

通過barChartView的xAxis屬性獲取到X軸,代碼如下:

hartXAxis *xAxis = self.barChartView.xAxis;

設置X軸樣式的代碼如下:

ChartXAxis *xAxis = self.barChartView.xAxis;xAxis.axisLineWidth = 1;//設置X軸線寬xAxis.labelPosition = XAxisLabelPositionBottom;//X軸的顯示位置,默認是顯示在上面的xAxis.drawGridLinesEnabled = NO;//不繪制網格線xAxis.spaceBetweenLabels = 4;//設置label間隔,若設置為1,則如果能全部顯示,則每個柱形下面都會顯示labelxAxis.labelTextColor = [UIColor brownColor];//label文字顏色

4.設置barChartView的Y軸樣式

barChartView默認樣式中會繪制左右兩側的Y軸,首先需要先隱藏右側的Y軸,代碼如下:

self.barChartView.rightAxis.enabled = NO;//不繪制右邊軸

接著開始設置左側Y軸的樣式.

首先設置Y軸軸線的樣式,代碼如下:

leftAxis.forceLabelsEnabled = NO;//不強制繪制制定數量的labelleftAxis.showOnlyMinMaxEnabled = NO;//是否只顯示最大值和最小值leftAxis.axisMinValue = 0;//設置Y軸的最小值leftAxis.startAtZeroEnabled = YES;//從0開始繪制leftAxis.axisMaxValue = 105;//設置Y軸的最大值leftAxis.inverted = NO;//是否將Y軸進行上下翻轉leftAxis.axisLineWidth = 0.5;//Y軸線寬leftAxis.axisLineColor = [UIColor blackColor];//Y軸顏色

通過labelCount屬性設置Y軸要均分的數量.

在這里要說明一下,設置的labelCount的值不一定就是Y軸要均分的數量,這還要取決于forceLabelsEnabled屬性,如果forceLabelsEnabled等于YES, 則強制繪制指定數量的label, 但是可能不是均分的.代碼如下:

ChartYAxis *leftAxis = self.barChartView.leftAxis;//獲取左邊Y軸leftAxis.labelCount = 5;leftAxis.forceLabelsEnabled = NO;

設置Y軸上標簽的樣式,代碼如下:

leftAxis.labelPosition = YAxisLabelPositionOutsideChart;//label位置 leftAxis.labelTextColor = [UIColor brownColor];//文字顏色leftAxis.labelFont = [UIFont systemFontOfSize:10.0f];//文字字體

設置Y軸上標簽顯示數字的格式,代碼如下:

leftAxis.valueFormatter = [[NSNumberFormatter alloc] init];//自定義格式leftAxis.valueFormatter.positiveSuffix = @" $";//數字后綴單位

設置Y軸上網格線的樣式,代碼如下:

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;//開啟抗鋸齒

在Y軸上添加限制線,代碼如下:

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;//設置限制線繪制在柱形圖的后面

5.設置barChartView的其它樣式

通過legend獲取到圖例對象,然后把它隱藏掉,代碼如下:

self.barChartView.legend.enabled = NO;//不顯示圖例說明

隱藏描述文字,代碼如下:

self.barChartView.descriptionText = @"";//不顯示,就設為空字符串即可

三、為barChartView的提供數據

為barChartView提供數據是通過其data屬性提供的,首先需要創建BarChartData數據對象,代碼如下:

//為柱形圖設置數據- (BarChartData *)setData{ int xVals_count = 12;//X軸上要顯示多少條數據 double maxYVal = 100;//Y軸的最大值 //X軸上面需要顯示的數據 NSMutableArray *xVals = [[NSMutableArray alloc] init]; for (int i = 0; i < xVals_count; i++) { [xVals addObject:[NSString stringWithFormat:@"%d月", i+1]]; } //對應Y軸上面需要顯示的數據 NSMutableArray *yVals = [[NSMutableArray alloc] init]; for (int i = 0; i < xVals_count; i++) { double mult = maxYVal + 1; double val = (double)(arc4random_uniform(mult)); BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValue:val xIndex:i]; [yVals addObject:entry]; } //創建BarChartDataSet對象,其中包含有Y軸數據信息,以及可以設置柱形樣式 BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:nil]; set1.barSpace = 0.2;//柱形之間的間隙占整個柱形(柱形+間隙)的比例 set1.drawValuesEnabled = YES;//是否在柱形圖上面顯示數值 set1.highlightEnabled = NO;//點擊選中柱形圖是否有高亮效果,(雙擊空白處取消選中) [set1 setColors:ChartColorTemplates.material];//設置柱形圖顏色 //將BarChartDataSet對象放入數組中 NSMutableArray *dataSets = [[NSMutableArray alloc] init]; [dataSets addObject:set1]; //創建BarChartData對象, 此對象就是barChartView需要最終數據對象 BarChartData *data = [[BarChartData alloc] initWithXVals:xVals dataSets:dataSets]; [data setValueFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:10.f]];//文字字體 [data setValueTextColor:[UIColor orangeColor]];//文字顏色 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; //自定義數據顯示格式 [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setPositiveFormat:@"#0.0"]; [data setValueFormatter:formatter]; return data;}

為barChartView提供數據并設置動畫效果,代碼如下:

self.data = [self setData]; //為柱形圖提供數據 self.barChartView.data = self.data;//設置動畫效果,可以設置X軸和Y軸的動畫效果[self.barChartView animateWithYAxisDuration:1.0f];

四、實現barChartView的代理方法

1.點擊選中柱形圖時的代理方法,代碼如下:

- (void)chartValueSelected:(ChartViewBase * _Nonnull)chartView entry:(ChartDataEntry * _Nonnull)entry dataSetIndex:(NSInteger)dataSetIndex highlight:(ChartHighlight * _Nonnull)highlight{ NSLog(@"---chartValueSelected---value: %g", entry.value);}

2.沒有選中柱形圖時的代理方法,代碼如下:

- (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.拖拽圖表時的代理方法

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

運行結果如下:

運行結果

Demo下載地址:http://xiazai.VeVB.COm/201612/yuanma/BarChartDemo-BarChartDemo_jb51.rar

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久999| 久久天天躁狠狠躁夜夜躁2014| 性欧美亚洲xxxx乳在线观看| 久久6免费高清热精品| 91精品国产色综合久久不卡98| 亚洲深夜福利视频| 国产成人久久久| 亚洲精品一区av在线播放| 欧日韩在线观看| 欧美夫妻性生活xx| 在线日韩中文字幕| 日韩激情视频在线播放| 欧美黑人又粗大| 日韩中文有码在线视频| 久久综合伊人77777蜜臀| 亚洲天堂精品在线| 久久久人成影片一区二区三区观看| 97**国产露脸精品国产| 欧美在线观看一区二区三区| 高清视频欧美一级| 精品av在线播放| 亚洲最大成人免费视频| 色悠悠国产精品| 亚洲成人在线视频播放| 国产精品一区二区三区久久久| 美女视频久久黄| 国产aⅴ夜夜欢一区二区三区| 2019国产精品自在线拍国产不卡| 日韩欧美国产成人| 欧美日韩国产色| 亚洲女在线观看| 裸体女人亚洲精品一区| 在线观看欧美日韩| 日韩性xxxx爱| 亚洲精品www久久久久久广东| 欧美午夜电影在线| 国产精品日本精品| 国产成人精品免高潮在线观看| 91香蕉嫩草神马影院在线观看| 午夜精品一区二区三区av| 色噜噜狠狠狠综合曰曰曰88av| 欧美成人免费视频| 国产精品人人做人人爽| 亚洲精品国产精品国自产在线| 欧美性极品xxxx做受| 欧美床上激情在线观看| 日韩欧美成人免费视频| 成人黄色av播放免费| 伊是香蕉大人久久| 日韩中文字幕久久| 日韩中文娱乐网| 国产欧美va欧美va香蕉在| 欧美日韩国产丝袜美女| 丝袜美腿亚洲一区二区| 日韩中文字幕精品视频| 欧美性猛交xxxx乱大交极品| 欧美性jizz18性欧美| 亚洲成人a**站| 色多多国产成人永久免费网站| 国产精品2018| 国产激情久久久久| 欧美高清在线视频观看不卡| 亚洲欧美在线第一页| 国产精品www网站| 91在线看www| 97久久久久久| 久久免费视频在线观看| 操日韩av在线电影| 国产成人久久精品| 日韩欧美国产免费播放| 成人福利在线观看| 在线电影中文日韩| 国产精品视频xxx| 国产精品视频网| 日韩欧美在线字幕| 欧美成人免费大片| 91sa在线看| 国产亚洲精品一区二555| 日韩精品中文字幕在线| 国产福利精品av综合导导航| 性色av一区二区三区| 久久精品色欧美aⅴ一区二区| 欧美极品少妇与黑人| 欧美亚洲一区在线| 亚洲系列中文字幕| 日韩电影大全免费观看2023年上| 亚洲国产精品电影在线观看| 欧美精品在线网站| 欧美最猛性xxxxx(亚洲精品)| 97精品欧美一区二区三区| 美女扒开尿口让男人操亚洲视频网站| 中文字幕自拍vr一区二区三区| 91沈先生在线观看| 成人高清视频观看www| 中文字幕在线看视频国产欧美| 在线观看久久久久久| 久久久之久亚州精品露出| 国产精品手机播放| 日韩在线免费观看视频| 国产精品久久久久7777婷婷| 日韩av手机在线| 亚洲日本欧美中文幕| 亚洲激情在线观看视频免费| 亚洲人成自拍网站| 正在播放欧美视频| 久久成人18免费网站| 国产日韩在线看片| 国产美女精品视频免费观看| 欧美国产亚洲视频| 青青久久av北条麻妃黑人| 久久九九精品99国产精品| 在线国产精品视频| 亚洲欧美国产一本综合首页| 亚洲综合中文字幕68页| 亚洲人成电影网站色xx| 91国内产香蕉| 欧美极品少妇xxxxx| 成人做爰www免费看视频网站| 欧美成人免费播放| 成人两性免费视频| 这里精品视频免费| 91精品国产99久久久久久| 国产日韩欧美一二三区| 亚洲国产97在线精品一区| 亚洲人在线观看| 欧美性猛交xxxx乱大交蜜桃| 俺也去精品视频在线观看| 97精品国产97久久久久久春色| 亚洲人高潮女人毛茸茸| 黑人巨大精品欧美一区二区一视频| 欧美亚洲在线播放| 久99九色视频在线观看| 欧美高清视频一区二区| 麻豆乱码国产一区二区三区| 一个人看的www久久| 国产精品自产拍在线观看中文| 国产一区玩具在线观看| 中文字幕日韩欧美在线| 97精品视频在线| 伊人久久久久久久久久久久久| 亚洲日本中文字幕免费在线不卡| 亚洲女人天堂色在线7777| 国产精品美女主播在线观看纯欲| 久久久久久久久久久免费精品| 欧美一级高清免费播放| 91沈先生在线观看| 浅井舞香一区二区| 91亚洲国产成人久久精品网站| 97久久精品人搡人人玩| 黑人极品videos精品欧美裸| 欧美在线一区二区视频| 最近2019中文字幕大全第二页| 久久综合伊人77777| 91免费人成网站在线观看18| 精品国产31久久久久久| 亚洲美女又黄又爽在线观看| 欧美中文字幕在线播放| 成人免费视频xnxx.com| 久久久精品美女| 亚洲色图校园春色| 精品国产一区二区三区四区在线观看| 成人黄色免费网站在线观看| 亚洲精品少妇网址| 欧美国产日韩一区二区三区|