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

首頁 > 系統 > iOS > 正文

iOS畫出精美的圖表方法示例

2019-10-21 18:40:02
字體:
來源:轉載
供稿:網友

前言

iOS端畫圖表的庫很多,今天給大家介紹一款很有名的庫 - Charts

借助Charts,我們可以畫出很精美的折線圖、柱狀圖、餅狀圖、K線、雷達、混合圖表等等

github地址

iOS,圖表

1.集成Charts

這里只是做一個簡略說明,具體的可以參考官方的集成方法 Charts

如果使用的Swift開發,可以直接import Charts

如果使用OC開發,則需要混編,建立ProjectName-Bridging-Header.h橋接文件,這里詳細介紹混編開發

  1. 利用CocoaPods,在Podfile文件中寫入 : pod 'Charts',然后pod install
  2. 在橋接文件中@import Charts;
  3. 在需要使用Charts的文件中,#import "ProjectName-Bridging-Header.h",就可以使用Charts中的代碼了

2.折線圖

//初始化折線圖- (LineChartView *)lineChartView{ if(!_lineChartView){  _lineChartView = [[LineChartView alloc] initWithFrame:CGRectZero];  [_lineChartView setExtraOffsetsWithLeft:15 top:0 right:15 bottom:10];//距離邊緣的間隙  _lineChartView.delegate = self;//設置代理  _lineChartView.backgroundColor = [UIColor whiteColor];  _lineChartView.noDataText = @"暫無此產品的價格趨勢";  _lineChartView.noDataFont = [UIFont systemFontOfSize:15];  _lineChartView.noDataTextColor = HEXCOLOR(0x444444);  _lineChartView.chartDescription.enabled = YES;  _lineChartView.scaleYEnabled = NO;//取消Y軸縮放  _lineChartView.scaleXEnabled = NO;//取消X軸縮放  _lineChartView.doubleTapToZoomEnabled = NO;//取消雙擊縮放  _lineChartView.dragEnabled = YES;//啟用拖拽  _lineChartView.dragDecelerationEnabled = YES;//拖拽后是否有慣性效果  _lineChartView.dragDecelerationFrictionCoef = 0.9;//拖拽后慣性效果的摩擦系數(0~1),數值越小,慣性越不明顯  //描述及圖例樣式  [_lineChartView setDescriptionText:@""];  _lineChartView.legend.enabled = NO;    //設置左側Y軸  _lineChartView.rightAxis.enabled = YES;//繪制右邊軸  ChartYAxis *leftAxis = _lineChartView.leftAxis;//獲取左邊Y軸  leftAxis.labelCount = 5;//Y軸label數量,數值不一定,如果forceLabelsEnabled等于YES, 則強制繪制制定數量的label, 但是可能不平均  leftAxis.forceLabelsEnabled = NO;//不強制繪制指定數量的labe  leftAxis.axisLineWidth = 0.6;  //設置Y軸線寬  leftAxis.axisLineColor = [UIColor blackColor]; //設置Y軸顏色  // leftAxis.axisMinValue = 0;//設置Y軸的最小值  //leftAxis.axisMaxValue = 105;//設置Y軸的最大值  leftAxis.inverted = NO;//是否將Y軸進行上下翻轉  leftAxis.axisLineColor = [UIColor blackColor];//Y軸顏色  leftAxis.labelPosition = YAxisLabelPositionInsideChart;//label位置  leftAxis.labelTextColor = [UIColor blackColor];//文字顏色  leftAxis.labelFont = [UIFont systemFontOfSize:10.0f];//文字字體  //leftAxis.valueFormatter = [[SymbolsValueFormatter alloc]init];//設置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;//開啟抗鋸齒    //設置Z軸  ChartYAxis *rightAxis = _lineChartView.rightAxis;//獲取右邊Z軸  rightAxis.axisLineWidth = 0.6;  rightAxis.axisLineColor = [UIColor blackColor];//Z軸顏色  rightAxis.drawGridLinesEnabled = NO;  rightAxis.drawLabelsEnabled = NO;    //設置X軸  ChartXAxis *xAxis = _lineChartView.xAxis;  xAxis.valueFormatter = self;   //這里才是最最最最最最關鍵的代碼  xAxis.granularityEnabled = YES;//設置重復的值不顯示  xAxis.labelCount = 5;  xAxis.spaceMin = 0;    //設置坐標軸額外的最小空間  xAxis.forceLabelsEnabled = YES;  xAxis.labelPosition = XAxisLabelPositionBottom;//設置x軸數據在底部  xAxis.labelTextColor = [UIColor blackColor];//文字顏色  xAxis.axisLineWidth = 0.6;  xAxis.axisLineColor = [UIColor blackColor]; //X軸的顏色  xAxis.gridLineDashLengths = @[@3.0f, @3.0f];//設置虛線樣式的網格線  xAxis.gridColor = [UIColor colorWithRed:200/255.0f green:200/255.0f blue:200/255.0f alpha:1];//網格線顏色  xAxis.gridAntialiasEnabled = YES;//開啟抗鋸齒  //_lineChartView.maxVisibleCount = 999;//設置能夠顯示的數據數量    //設置浮層  _lineChartView.drawMarkers = YES;  ChartMarkerView * makerView = [[ChartMarkerView alloc]init];  makerView.offset = CGPointMake(-self.subPriceView.frame.size.width,-self.subPriceView.frame.size.height/2);  makerView.chartView = _lineChartView;  _lineChartView.marker = makerView;  [makerView addSubview:self.subPriceView]; } return _lineChartView;}
//折線圖的數據源- (LineChartData *)getLineData{  if(self.priceTrendDataSource.count == 0) return nil;  //X軸上面需要顯示的數據 NSMutableArray *xVals = [NSMutableArray array];  //對應Y軸上面需要顯示的數據,價格 NSMutableArray *yVals = [NSMutableArray array];  NSInteger index = 0;  for (PriceTrendModel * model in self.priceTrendDataSource) {    [xVals addObject:[NSString stringWithFormat:@"%@",model.trend_X]];    ChartDataEntry *entry_Y = [[ChartDataEntry alloc] initWithX:index y:model.trend_Y];  [yVals addObject:entry_Y];    index ++; } LineChartDataSet *lineSet = [[LineChartDataSet alloc] initWithValues:yVals label:@""]; lineSet.mode = LineChartModeCubicBezier; lineSet.lineWidth = 1.0f; lineSet.drawValuesEnabled = NO; lineSet.valueColors = @[[UIColor purpleColor]]; //折線上的數值的顏色 [lineSet setColor:HEXCOLOR(0x24A5EA)]; //折線本身的顏色 lineSet.drawSteppedEnabled = NO;//是否開啟繪制階梯樣式的折線圖 lineSet.drawCirclesEnabled = NO; lineSet.drawFilledEnabled = NO;//是否填充顏色 lineSet.circleRadius = 1.0f; lineSet.drawCircleHoleEnabled = NO; lineSet.circleHoleRadius = 0.0f; lineSet.circleHoleColor = [UIColor whiteColor];  lineSet.highlightEnabled = YES;//選中拐點,是否開啟高亮效果(顯示十字線) //lineSet.highlightColor = HEXCOLOR(0xc83c23);//點擊選中拐點的十字線的顏色 lineSet.highlightColor = [HEXCOLOR(0x444444) colorWithAlphaComponent:0.5];//點擊選中拐點的十字線的顏色 lineSet.highlightLineWidth = 0.5;//十字線寬度 //lineSet.highlightLineDashLengths = @[@5,@5]; //設置十字線的虛線寬度  lineSet.valueFont = [UIFont systemFontOfSize:12]; lineSet.axisDependency = AxisDependencyLeft;  LineChartData *lineData = [[LineChartData alloc] initWithDataSet:lineSet];  return lineData;}

3.餅狀圖

//初始化餅狀圖- (PieChartView *)pieChartView{ if (!_pieChartView) {  _pieChartView = [[PieChartView alloc] initWithFrame:CGRectZero];    _pieChartView.backgroundColor = [UIColor whiteColor];    //基本樣式  //[_pieChartView setExtraOffsetsWithLeft:30 top:10 right:30 bottom:10];//餅狀圖距離邊緣的間隙    [_pieChartView setExtraOffsetsWithLeft:0 top:0 right:0 bottom:0];//餅狀圖距離邊緣的間隙    _pieChartView.usePercentValuesEnabled = NO;//是否根據所提供的數據, 將顯示數據轉換為百分比格式  _pieChartView.dragDecelerationEnabled = YES;//拖拽餅狀圖后是否有慣性效果  _pieChartView.drawSliceTextEnabled = NO;//是否顯示區塊文本    //空心樣式  _pieChartView.drawHoleEnabled = YES;//餅狀圖是否是空心  _pieChartView.holeRadiusPercent = 0.8;//空心半徑占比  _pieChartView.holeColor = [UIColor clearColor];//空心顏色  _pieChartView.transparentCircleRadiusPercent = 0.52;//半透明空心半徑占比  _pieChartView.transparentCircleColor = [UIColor colorWithRed:210/255.0 green:145/255.0 blue:165/255.0 alpha:0.3];//半透明空心的顏色    //設置空心文字    if (_pieChartView.isDrawHoleEnabled == YES) {   _pieChartView.drawCenterTextEnabled = YES;//是否顯示中間文字   //普通文本   //_pieChartView.centerText = @"資產";//中間文字   //富文本   NSMutableAttributedString *centerText = [[NSMutableAttributedString alloc] initWithString:@"收支詳情"];   [centerText setAttributes:@{NSFontAttributeName: [UIFont boldSystemFontOfSize:18],          NSForegroundColorAttributeName: HEXCOLOR(0x444444)}        range:NSMakeRange(0, centerText.length)];   _pieChartView.centerAttributedText = centerText;  }    //設置餅狀圖描述  _pieChartView.descriptionText = @"";  //_pieChartView.descriptionFont = [UIFont systemFontOfSize:10];  //_pieChartView.descriptionTextColor = [UIColor grayColor];    //設置圖例樣式  _pieChartView.legend.maxSizePercent = 0;//圖例在餅狀圖中的大小占比, 這會影響圖例的寬高  _pieChartView.legend.formToTextSpace = 5;//文本間隔  _pieChartView.legend.yEntrySpace = 12;//10;  _pieChartView.legend.xEntrySpace = 15;  _pieChartView.legend.font = [UIFont systemFontOfSize:10];//字體大小  _pieChartView.legend.textColor = [UIColor grayColor];//字體顏色  _pieChartView.legend.position = ChartLegendPositionBelowChartCenter;//圖例在餅狀圖中的位置  _pieChartView.legend.form = ChartLegendFormCircle;//圖示樣式: 方形、線條、圓形  _pieChartView.legend.formSize = 0;//圖示大小 } return _pieChartView;}
//餅狀圖的數據源- (PieChartData *)getPieData{  //每個區塊的金額數 NSMutableArray * moneyArray = [NSMutableArray arrayWithArray:@[@33.33,@66.66]];  //每個區塊的名稱或描述 //NSArray * xVals = @[@"充值誠意金",@"充值會員費",@"贈送誠意金",@"贈送會員費",@"被凍結資金"];// NSMutableArray * xVals = [NSMutableArray array];  //每個區塊的顏色 NSMutableArray *colors = [[NSMutableArray alloc] init];  switch (_forecastType) {  case ForecastPriceTypeUp:{   [colors addObject:HEXCOLOR(0xFF1F32)];   [moneyArray removeAllObjects];   [moneyArray addObject:@(self.forecastModel.upRate)];   [moneyArray addObject:@(1 - self.forecastModel.upRate)];   break;  }  case ForecastPriceTypeDown:{   [colors addObject:HEXCOLOR(0x5FD954)];   [moneyArray removeAllObjects];   [moneyArray addObject:@(self.forecastModel.downRate)];   [moneyArray addObject:@(1 - self.forecastModel.downRate)];   break;  }  case ForecastPriceTypeLevel:{   [colors addObject:HEXCOLOR(0x00D6F6)];   [moneyArray removeAllObjects];   [moneyArray addObject:@(self.forecastModel.rate)];   [moneyArray addObject:@(1 - self.forecastModel.rate)];   break;  }  default:   break; }  [colors addObject:HEXCOLOR(0xF2F2F2)];  //每個區塊的數據 NSMutableArray *yVals = [[NSMutableArray alloc] init];  for (int i = 0; i < moneyArray.count; i++) {    double randomVal = [moneyArray[i] doubleValue];    //BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValue:randomVal xIndex:i];    //ChartDataEntry * entry = [[ChartDataEntry alloc] initWithValue:randomVal xIndex:i];    ChartDataEntry * entry = [[ChartDataEntry alloc] initWithX:i y:randomVal];    [yVals addObject:entry]; }  //dataSet //PieChartDataSet *dataSet = [[PieChartDataSet alloc] initWithYVals:yVals label:@""]; PieChartDataSet *dataSet = [[PieChartDataSet alloc] initWithValues:yVals label:@""]; dataSet.drawValuesEnabled = NO;//是否繪制顯示數據 dataSet.colors = colors;//區塊顏色 dataSet.sliceSpace = 3;//相鄰區塊之間的間距 dataSet.selectionShift = 2;//選中區塊時, 放大的半徑 dataSet.xValuePosition = PieChartValuePositionInsideSlice;//名稱位置 dataSet.yValuePosition = PieChartValuePositionOutsideSlice;//數據位置 //數據與區塊之間的用于指示的折線樣式 dataSet.valueLinePart1OffsetPercentage = 0.85;//折線中第一段起始位置相對于區塊的偏移量, 數值越大, 折線距離區塊越遠 dataSet.valueLinePart1Length = 0.5;//折線中第一段長度占比 dataSet.valueLinePart2Length = 0.4;//折線中第二段長度最大占比 dataSet.valueLineWidth = 1;//折線的粗細 dataSet.valueLineColor = [UIColor brownColor];//折線顏色 dataSet.valueLineVariableLength = YES;  //data //PieChartData *data = [[PieChartData alloc] initWithXVals:xVals dataSet:dataSet]; PieChartData *data = [[PieChartData alloc] initWithDataSet:dataSet]; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; formatter.numberStyle = kCFNumberFormatterDecimalStyle;//NSNumberFormatterPercentStyle; [formatter setPositiveFormat:@"###,##0.00;"]; formatter.maximumFractionDigits = 2;//小數位數 formatter.multiplier = @1.f; formatter.paddingPosition = kCFNumberFormatterPadBeforeSuffix; formatter.positiveSuffix = @"元"; //[data setValueFormatter:formatter];//設置顯示數據格式 [data setValueTextColor:[UIColor brownColor]]; [data setValueFont:[UIFont systemFontOfSize:10]];  return data;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。

 

注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品久久久久久久| 亚洲综合在线中文字幕| 亚洲国产成人在线播放| 成人精品久久一区二区三区| 欧美高清第一页| 欧洲亚洲女同hd| 国产亚洲欧美日韩精品| 亚洲91精品在线| 国产精品久久国产精品99gif| 亚洲男人天堂2023| 成人久久18免费网站图片| 久久电影一区二区| 色噜噜国产精品视频一区二区| 精品国产福利在线| 777午夜精品福利在线观看| 亚洲美腿欧美激情另类| 日本中文字幕成人| 亚洲欧美日韩国产中文专区| 日韩av在线网页| 欧美精品免费播放| 国产欧美一区二区| 91精品久久久久久久久久久久久| 欧美精品在线视频观看| 欧美美女15p| 色偷偷av一区二区三区| 亚洲精品之草原avav久久| 国产精品精品国产| 欧美午夜激情在线| 狠狠躁夜夜躁久久躁别揉| 国产欧美精品日韩精品| 69av成年福利视频| 91精品国产免费久久久久久| 一区二区三区回区在观看免费视频| 欧美日韩国产综合新一区| 国产三级精品网站| 91久久精品国产91久久| 日韩高清不卡av| 欧美日本高清一区| 国产精品偷伦视频免费观看国产| 欧美日韩一区二区免费视频| 日韩在线视频观看正片免费网站| 久久精品国产久精国产思思| 色综合久综合久久综合久鬼88| 日韩在线免费观看视频| 国产免费一区二区三区在线观看| 亚洲最新中文字幕| 久久伊人精品视频| 国产日韩中文字幕在线| 成人两性免费视频| 日韩中文字幕精品| 18久久久久久| 亚洲第一av网站| 精品视频一区在线视频| 中文字幕国产亚洲2019| 日韩国产一区三区| 国产男人精品视频| 成人h视频在线观看播放| 久久精品国产2020观看福利| 日韩免费精品视频| 97热精品视频官网| 中文字幕精品一区久久久久| 亚洲成人国产精品| 国产色婷婷国产综合在线理论片a| 在线观看精品国产视频| 国产精品久久久久免费a∨大胸| 久久久伊人欧美| 久久成人av网站| 国产日韩在线看片| 亚洲国产精品女人久久久| 91在线免费看网站| 91精品91久久久久久| 日韩一区视频在线| 韩日欧美一区二区| 成人乱色短篇合集| 日韩中文字幕国产精品| 精品成人国产在线观看男人呻吟| 亚洲欧美制服第一页| 中文字幕在线看视频国产欧美| 久久久亚洲成人| 亚洲第一国产精品| 国精产品一区一区三区有限在线| 欧美日韩成人在线观看| 亚洲mm色国产网站| 裸体女人亚洲精品一区| 国产精品久久77777| www.日韩视频| 精品国产一区二区三区久久狼黑人| 精品无人区乱码1区2区3区在线| 中文字幕一区二区三区电影| 久久全球大尺度高清视频| 精品国产一区二区三区四区在线观看| 久久综合免费视频| 国产精品久久久999| 日韩av电影免费观看高清| 91地址最新发布| 日韩成人av在线播放| 欧美高清视频在线观看| 中文字幕亚洲综合| 日韩精品在线观看网站| 国产香蕉精品视频一区二区三区| 中文字幕亚洲欧美一区二区三区| 亚洲视频视频在线| 2019中文字幕免费视频| 欧美亚洲另类激情另类| 亚洲热线99精品视频| 国产美女精品视频免费观看| 亚洲永久在线观看| 日韩在线视频观看| 国产精品久久一区主播| 亚洲香蕉在线观看| 日韩激情视频在线播放| 日韩美女视频免费在线观看| 国产精品福利网站| 日韩av一卡二卡| 久久国产加勒比精品无码| 亚洲国产精品va| 国产精品com| 日韩av在线网址| 97视频在线观看成人| 国产精品久久久久久av下载红粉| 欧美午夜丰满在线18影院| 大桥未久av一区二区三区| 国产精品免费视频久久久| 欧美人与性动交| 久久久国产精品一区| 亚洲国产成人久久综合一区| 91情侣偷在线精品国产| 亚洲激情视频网站| 欧美一级片一区| 欧美精品第一页在线播放| 精品国产一区二区三区久久狼5月| 26uuu另类亚洲欧美日本一| 久久视频中文字幕| 91影院在线免费观看视频| 久久影院资源站| 欧美日韩亚洲一区二| 91久久精品美女高潮| 日韩高清免费观看| 91香蕉嫩草影院入口| 亚洲人成绝费网站色www| 97香蕉久久夜色精品国产| 亚洲四色影视在线观看| 国产乱人伦真实精品视频| 深夜精品寂寞黄网站在线观看| 欧美激情精品在线| 日韩有码在线视频| 国内精品久久久久影院优| 欧美日韩国产限制| 亚洲欧美激情精品一区二区| 久久久av电影| 国产精品va在线播放我和闺蜜| 欧美一区二区三区图| 91中文在线观看| 亚洲综合精品一区二区| 亚洲综合日韩在线| 亚洲国产精品国自产拍av秋霞| 亚洲欧美三级在线| 国产女同一区二区| 久久全球大尺度高清视频| 亚洲精品美女视频| 日本成熟性欧美| 欧美成人网在线| 欧美大片大片在线播放| 国产精品视频自在线|