• iOS PNChart用法


    https://www.jianshu.com/p/fa8398e9ec62

    https://blog.csdn.net/qq_30450549/article/details/78262593

    https://blog.csdn.net/u012265444/article/details/77116231

    使用 cocoapods 导入‘PNChart‘ 
    宏定义:

    #define MAIN_WIDTH [[UIScreen mainScreen] bounds].size.width
    #define MAIN_HEIGHT [[UIScreen mainScreen] bounds].size.height
    • 1
    • 2

    1.折线图

    初始化PNLineChart

    PNLineChart *lineChart = [[PNLineChart alloc]initWithFrame:CGRectMake(0, 150, [UIScreen mainScreen].bounds.size.width, 300)];
    • 1
    //设置背景颜色
    lineChart.backgroundColor = [UIColor whiteColor];
    • 1
    • 2

    对坐标轴进行设置

    //设置坐标轴是否可见
    lineChart.showCoordinateAxis = YES;
    //设置是否显示网格线
    lineChart.showYGridLines = YES;
    //设置网格线颜色
    lineChart.yGridLinesColor = [UIColor grayColor];
    //设置X轴标签
    lineChart.xLabels = @[@"魅族",@"华为",@"中兴",@"小米",@"苹果",@"一加",@"乐视"];
    //设置坐标轴颜色
    lineChart.axisColor = [UIColor blackColor];
    //设置坐标轴宽度
    lineChart.axisWidth = 1.0;
    //设置 y 轴的最大值
    lineChart.yFixedValueMax = 20.0;
    //设置 x 轴的最小值
    lineChart.yFixedValueMin = 1.0;
    //y 轴刻度数量
    lineChart.yLabelNum = 20;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    设置折线1数据

    //曲线数据1
    PNLineChartData *data1 = [[PNLineChartData alloc]init];
    //曲线颜色
    data1.color = PNRed;
    //曲线格式
    data1.inflexionPointStyle = PNLineChartPointStyleCircle;
    //设置数据(Y轴坐标根据数据的大小自动适应)
    NSArray *dataArray1 = @[@4,@8,@7,@4,@16,@6,@15];
    data1.itemCount = dataArray1.count;
    data1.getData = ^(NSUInteger index){
        CGFloat yValue = [dataArray1[index] floatValue];
        return [ PNLineChartDataItem dataItemWithY:yValue];    
    };
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    设置折线2数据

    //曲线数据2
    PNLineChartData *data2 = [[PNLineChartData alloc]init];
    //曲线颜色
    data2.color = PNGreen;
    //曲线格式
    data2.inflexionPointStyle = PNLineChartPointStyleCircle;
    //设置数据(Y轴坐标根据数据的大小自动适应)
    NSArray *dataArray2 = @[@6,@15,@3,@12,@2,@5,@3];
    data2.itemCount = dataArray2.count;
    data2.getData = ^(NSUInteger index){
        CGFloat yValue = [dataArray2[index] floatValue];
        return [ PNLineChartDataItem dataItemWithY:yValue];
    };
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    设置 lineChart 的数据

    lineChart.chartData = @[data1,data2];
    • 1

    开始绘图

    //开始绘图
    [lineChart strokeChart];
    • 1
    • 2

    将 lineChart 添加到视图上

    [self.view addSubview:lineChart];
    • 1

    添加标注

    //
    //数据标注名称
    data1.dataTitle = @"数据1标注名称";
    data2.dataTitle = @"数据2标注名称";
    //标注摆放样式
    lineChart.legendStyle = PNLegendItemStyleSerial;
    //标注字体
    lineChart.legendFont = [UIFont boldSystemFontOfSize:12.0f];
    //标注颜色
    lineChart.legendFontColor = [UIColor blackColor];
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    标注视图

    UIView *legend = [lineChart getLegendWithMaxWidth:[UIScreen mainScreen].bounds.size.width];
    [legend setFrame:CGRectMake(0, 480, legend.frame.size.width, legend.frame.size.height)];
    legend.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:legend];
    • 1
    • 2
    • 3
    • 4

    折线图效果如下: 

    2.环形图

    //初始化圆环PNCircleChart最后一个初始化方法功能比较齐全
    //total总圆100单位
    //current占总圆的80单位
    //clockwise顺时针方向YES
    //shadow有阴影YES
    //shadowColor阴影颜色yellowColor
    //displayCountingLabel是否显示计数标签YES
    //overrideLineWidth圆环的宽20像素
    PNCircleChart * circleChart = [[PNCircleChart alloc]initWithFrame:CGRectMake(0, 150, MAIN_WIDTH, 200) total:[NSNumber numberWithDouble:100.0] current:[NSNumber numberWithDouble:55.5] clockwise:YES shadow:YES shadowColor:[UIColor yellowColor] displayCountingLabel:YES overrideLineWidth:[NSNumber numberWithInt:20]];
    //设置颜色
    //[circleChart setStrokeColorGradientStart:[UIColor redColor]]; //有渐变效果
    circleChart.strokeColor = [UIColor redColor];
    //设置类型
    circleChart.chartType = PNChartFormatTypePercentDoubleOne;
    //开始画圆
    [circleChart strokeChart];
    //背景颜色
    circleChart.backgroundColor = [UIColor whiteColor];
    //Add
    [self.view addSubview:circleChart];
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    环状图效果如下: 

    3.柱状图

    self.view.backgroundColor = [UIColor whiteColor];
    NSArray *items = @[[PNRadarChartDataItem dataItemWithValue:6 description:@"语文"],
                           [PNRadarChartDataItem dataItemWithValue:20 description:@"数学"],
                           [PNRadarChartDataItem dataItemWithValue:8 description:@"英语"],
                           [PNRadarChartDataItem dataItemWithValue:5 description:@"体育"],
                           [PNRadarChartDataItem dataItemWithValue:9 description:@"美术"],
                           [PNRadarChartDataItem dataItemWithValue:4 description:@"其他的"]
                           ];
    
    //valueDivider:间距
    PNRadarChart *radarChart = [[PNRadarChart alloc] initWithFrame:CGRectMake(0, 150, SCREEN_WIDTH, 300.0) items:items valueDivider:2];
    //最大值
    radarChart.maxValue = 24;
    //网格颜色
    radarChart.webColor = [UIColor lightGrayColor];
    //填充颜色
    radarChart.plotColor = [UIColor colorWithRed:107 / 255.0 green:202 / 255.0 blue:249 / 255.0 alpha:0.7];
    //线宽
    radarChart.lineWidth = 0.7;
    //开始绘图
    [radarChart strokeChart];
    //Add
    [self.view addSubview:radarChart];
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    柱状图效果: 
     
    4.饼状图

    NSArray *items = @[[PNPieChartDataItem dataItemWithValue:30 color:PNRed],
                           [PNPieChartDataItem dataItemWithValue:10 color:PNFreshGreen description:@"绿色"],
                           [PNPieChartDataItem dataItemWithValue:60 color:PNBlue description:@"蓝色"],
                           ];
    
    //PNPieChart初始化
    PNPieChart *pieChart = [[PNPieChart alloc] initWithFrame:CGRectMake(SCREEN_WIDTH /2 - 100, 150, 200, 200) items:items];
    //背景色    
    pieChart.backgroundColor = [UIColor whiteColor];
    //扇形上字体颜色
    pieChart.descriptionTextColor = [UIColor whiteColor];
    pieChart.descriptionTextFont = [UIFont fontWithName:@"Avenir-Medium" size:15.0];
    //扇形上字体阴影颜色
    pieChart.descriptionTextShadowColor = [UIColor blackColor];
    //显示实际数值(不显示比例数字)
    pieChart.showAbsoluteValues = NO;
    //只显示数值不显示内容描述
    pieChart.showOnlyValues = NO;
    //是否显示点击效果
    pieChart.shouldHighlightSectorOnTouch = YES;
    pieChart.enableMultipleSelection = YES;
    //开始绘图
    [pieChart strokeChart];
    //Add
    [self.view addSubview:pieChart];
    // 标注排放样式
    pieChart.legendStyle = PNLegendItemStyleStacked;
    pieChart.legendFont = [UIFont boldSystemFontOfSize:12.0f];
    UIView *legend = [pieChart getLegendWithMaxWidth:200];
    [legend setFrame:CGRectMake(130, 350, legend.frame.size.width, legend.frame.size.height)];
    [self.view addSubview:legend];
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    饼状图效果: 
     
    5.雷达图

    self.view.backgroundColor = [UIColor whiteColor];
    NSArray *items = @[[PNRadarChartDataItem dataItemWithValue:6 description:@"语文"],
                           [PNRadarChartDataItem dataItemWithValue:20 description:@"数学"],
                           [PNRadarChartDataItem dataItemWithValue:8 description:@"英语"],
                           [PNRadarChartDataItem dataItemWithValue:5 description:@"体育"],
                           [PNRadarChartDataItem dataItemWithValue:9 description:@"美术"],
                           [PNRadarChartDataItem dataItemWithValue:4 description:@"其他的"]
                           ];
    
    //valueDivider:间距
    PNRadarChart *radarChart = [[PNRadarChart alloc] initWithFrame:CGRectMake(0, 150, SCREEN_WIDTH, 300.0) items:items valueDivider:2];
    //最大值
    radarChart.maxValue = 24;
    //网格颜色
    radarChart.webColor = [UIColor lightGrayColor];
    radarChart.plotColor = [UIColor colorWithRed:107 / 255.0 green:202 / 255.0 blue:249 / 255.0 alpha:0.7];
    radarChart.lineWidth = 0.7;
    //开始绘图
    [radarChart strokeChart];
    //Add
    [self.view addSubview:radarChart];
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    对源代码进行修改 

    雷达图效果: 

    6.散点图

    PNScatterChart *scatterChart = [[PNScatterChart alloc] initWithFrame:CGRectMake(SCREEN_WIDTH /6.0 - 30, 150, 350, 300)];
    //设置 X 轴最小值,最大值,等分份数
    [scatterChart setAxisXWithMinimumValue:1 andMaxValue:15 toTicks:5];
    //设置 Y 轴最小值,最大值,等分份数
    [scatterChart setAxisYWithMinimumValue:1 andMaxValue:15 toTicks:5];
    //添加 X 轴及 Y 轴坐标
    NSMutableArray *data01Array = [[NSMutableArray alloc] init];
    NSMutableArray *arrX = [NSMutableArray arrayWithObjects:@"5",@"10",@"8",@"6",@"9",@"12",@"13",@"7",@"1",@"4", nil];
    NSMutableArray *arrY = [NSMutableArray arrayWithObjects:@"4",@"13",@"14",@"9",@"8",@"7",@"8",@"4",@"10",@"9", nil];
    [data01Array addObject:arrX];
    [data01Array addObject:arrY];
    
    PNScatterChartData *data01 = [PNScatterChartData new];
    data01.strokeColor = PNGreen;
    data01.fillColor = PNFreshGreen;
    data01.size = 3;
    data01.itemCount = [[data01Array objectAtIndex:0] count];
    data01.inflexionPointStyle = PNScatterChartPointStyleCircle;
    NSMutableArray *XAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:0]];
    NSMutableArray *YAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:1]];
    
    data01.getData = ^(NSUInteger index) {
        CGFloat xValue = [[XAr1 objectAtIndex:index] floatValue];
        CGFloat yValue = [[YAr1 objectAtIndex:index] floatValue];
        return [PNScatterChartDataItem dataItemWithX:xValue AndWithY:yValue];
    };
    
    [scatterChart setup];
    scatterChart.chartData = @[data01];
    [self.view addSubview:scatterChart];
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    散点图效果: 

  • 相关阅读:
    tflearn alexnet iter 10
    自然语言处理中的Attention Model:是什么及为什么
    深度学习的seq2seq模型——本质是LSTM,训练过程是使得所有样本的p(y1,...,yT‘|x1,...,xT)概率之和最大
    java 提取主域名
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(11月14日~11月20日)
    2个月女婴注射疫苗后死亡?启示!!
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(11月9日~11月13日)
    北京Uber优步司机奖励政策(11月16日~11月22日)
    【独家:震惊!——西城区所有学区优质度透解与大排名,泄密了!】
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(10月31日~11月6日)
  • 原文地址:https://www.cnblogs.com/itlover2013/p/14327057.html
Copyright © 2020-2023  润新知