charts框架繪制餅狀圖教程
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
一、創(chuàng)建餅狀圖對(duì)象
創(chuàng)建餅狀圖對(duì)象用到類是PieChartView.h, 代碼如下:
self.pieChartView = [[PieChartView alloc] init];
self.pieChartView.backgroundColor = BgColor;
[self.view addSubview:self.pieChartView];
?。踫elf.pieChartView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(300, 300));
make.center.mas_equalTo(self.view);
}];
二、設(shè)置餅狀圖外觀樣式
1. 基本樣式
?。踫elf.pieChartView setExtraOffsetsWithLeft:30 top:0 right:30 bottom:0];//餅狀圖距離邊緣的間隙
self.pieChartView.usePercentValuesEnabled = YES;//是否根據(jù)所提供的數(shù)據(jù), 將顯示數(shù)據(jù)轉(zhuǎn)換為百分比格式
self.pieChartView.dragDecelerationEnabled = YES;//拖拽餅狀圖后是否有慣性效果
self.pieChartView.drawSliceTextEnabled = YES;//是否顯示區(qū)塊文本
2. 設(shè)置餅狀圖中間的空心樣式
空心有兩個(gè)圓組成, 一個(gè)是hole, 一個(gè)是transparentCircle, transparentCircle里面是hole, 所以餅狀圖中間的空心也就是一個(gè)同心圓。 代碼如下:
self.pieChartView.drawHoleEnabled = YES;//餅狀圖是否是空心
self.pieChartView.holeRadiusPercent = 0.5;//空心半徑占比
self.pieChartView.holeColor = [UIColor clearColor];//空心顏色
self.pieChartView.transparentCircleRadiusPercent = 0.52;//半透明空心半徑占比
self.pieChartView.transparentCircleColor = [UIColor colorWithRed:210/255.0 green:145/255.0 blue:165/255.0 alpha:0.3];//半透明空心的顏色
3. 設(shè)置餅狀圖中心的文本
當(dāng)餅狀圖是空心樣式時(shí), 可以在餅狀圖中心添加文本, 添加文本有兩種方法。 一種方法是使用centerText 屬性添加, 這種方法不能設(shè)置字體顏色、大小等。 另一種方法是使用centerAttributedText屬性添加, 這種方法添加的富文本, 因此就可以對(duì)字體進(jìn)行進(jìn)一步美化了。 代碼如下:
if (self.pieChartView.isDrawHoleEnabled == YES) {
self.pieChartView.drawCenterTextEnabled = YES;//是否顯示中間文字
//普通文本
// self.pieChartView.centerText = @“餅狀圖”;//中間文字
//富文本
NSMutableAttributedString *centerText = [[NSMutableAttributedString alloc] initWithString:@“餅狀圖”];
[centerText setAttributes:@{NSFontAttributeName: [UIFont boldSystemFontOfSize:16],
NSForegroundColorAttributeName: [UIColor orangeColor]}
range:NSMakeRange(0, centerText.length)];
self.pieChartView.centerAttributedText = centerText;
}
4. 設(shè)置餅狀圖描述
self.pieChartView.deionText = @“餅狀圖示例”;
self.pieChartView.deionFont = [UIFont systemFontOfSize:10];
self.pieChartView.deionTextColor = [UIColor grayColor];
5. 設(shè)置餅狀圖圖例樣式
self.pieChartView.legend.maxSizePercent = 1;//圖例在餅狀圖中的大小占比, 這會(huì)影響圖例的寬高
self.pieChartView.legend.formToTextSpace = 5;//文本間隔
self.pieChartView.legend.font = [UIFont systemFontOfSize:10];//字體大小
self.pieChartView.legend.textColor = [UIColor grayColor];//字體顏色
self.pieChartView.legend.position = ChartLegendPositionBelowChartCenter;//圖例在餅狀圖中的位置
self.pieChartView.legend.form = ChartLegendFormCircle;//圖示樣式: 方形、線條、圓形
self.pieChartView.legend.formSize = 12;//圖示大小
三、為餅狀圖提供數(shù)據(jù)
為餅狀圖提供數(shù)據(jù), 首先需要?jiǎng)?chuàng)建兩個(gè)數(shù)組yVals和xVals, yVals數(shù)組存放餅狀圖每個(gè)區(qū)塊的數(shù)據(jù), xVals存放的是每個(gè)區(qū)塊的名稱或者描述。
接著需要用PieChartDataSet.h類創(chuàng)建dataSet對(duì)象, 創(chuàng)建時(shí)將yVals放進(jìn)去。
然后需要用PieChartData.h類創(chuàng)建data對(duì)象, 創(chuàng)建時(shí)將xVals和dataSet對(duì)象放進(jìn)去。
最后直接把data對(duì)象賦值給餅狀圖的data屬性即可。 創(chuàng)建data對(duì)象代碼如下:
- (PieChartData *)setData{
double mult = 100;
int count = 5;//餅狀圖總共有幾塊組成
//每個(gè)區(qū)塊的數(shù)據(jù)
NSMutableArray *yVals = [[NSMutableArray alloc] init];
for (int i = 0; i 《 count; i++) {
double randomVal = arc4random_uniform(mult + 1);
BarChartDataEntry *entry = [[BarChartDataEntry alloc] initWithValue:randomVal xIndex:i];
?。踶Vals addObject:entry];
}
//每個(gè)區(qū)塊的名稱或描述
NSMutableArray *xVals = [[NSMutableArray alloc] init];
for (int i = 0; i 《 count; i++) {
NSString *title = [NSString stringWithFormat:@“part%d”, i+1];
?。踴Vals addObject:title];
}
//dataSet
PieChartDataSet *dataSet = [[PieChartDataSet alloc] initWithYVals:yVals label:@“”];
dataSet.drawValuesEnabled = YES;//是否繪制顯示數(shù)據(jù)
NSMutableArray *colors = [[NSMutableArray alloc] init];
?。踓olors addObjectsFromArray:ChartColorTemplates.vordiplom];
?。踓olors addObjectsFromArray:ChartColorTemplates.joyful];
?。踓olors addObjectsFromArray:ChartColorTemplates.colorful];
[colors addObjectsFromArray:ChartColorTemplates.liberty];
?。踓olors addObjectsFromArray:ChartColorTemplates.pastel];
?。踓olors addObject:[UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f]];
dataSet.colors = colors;//區(qū)塊顏色
dataSet.sliceSpace = 0;//相鄰區(qū)塊之間的間距
dataSet.selectionShift = 8;//選中區(qū)塊時(shí), 放大的半徑
dataSet.xValuePosition = PieChartValuePositionInsideSlice;//名稱位置
dataSet.yValuePosition = PieChartValuePositionOutsideSlice;//數(shù)據(jù)位置
//數(shù)據(jù)與區(qū)塊之間的用于指示的折線樣式
dataSet.valueLinePart1OffsetPercentage = 0.85;//折線中第一段起始位置相對(duì)于區(qū)塊的偏移量, 數(shù)值越大, 折線距離區(qū)塊越遠(yuǎn)
dataSet.valueLinePart1Length = 0.5;//折線中第一段長(zhǎng)度占比
dataSet.valueLinePart2Length = 0.4;//折線中第二段長(zhǎng)度最大占比
dataSet.valueLineWidth = 1;//折線的粗細(xì)
dataSet.valueLineColor = [UIColor brownColor];//折線顏色
//data
PieChartData *data = [[PieChartData alloc] initWithXVals:xVals dataSet:dataSet];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterPercentStyle;
formatter.maximumFractionDigits = 0;//小數(shù)位數(shù)
formatter.multiplier = @1.f;
?。踕ata setValueFormatter:formatter];//設(shè)置顯示數(shù)據(jù)格式
?。踕ata setValueTextColor:[UIColor brownColor]];
?。踕ata setValueFont:[UIFont systemFontOfSize:10]];
return data;
}
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
charts框架繪制餅狀圖教程下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問(wèn)題? 378
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬(wàn)部;消息稱 MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過(guò)熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開源BIOS固件版本 448