zoukankan      html  css  js  c++  java
  • iOS PNChart的学习和使用

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

    前言

    不要问我为什么这么多时间写博客。我不会告诉你们的。

    我们的项目是外包出去的,外包反馈给我们的天气界面显示温度的曲线十分平滑美观,

    甚是好奇,于是请教了一番,方才知道PNChart这个来自中国大神的开源神器。

    于是有了这篇文章····

    我知道我有那么一点点“高产”····

    但是请大家理解我求知若渴,又想分享给大家的心情好不好(此处卖个萌)。

    正文

    1.折线图 英文名叫“Line Chart”
     
    外包做出来的样子如下图:
     
    很漂亮很细腻~我表示很喜欢~所以我也要学习制作~
    在我坚持不懈的努力之下,终于做的差不多了。
     
     
    除了一些细节在PNChart里面的代码改动没贴,(包括节点从圈变圆,还有显示度数,以及线和文本的背景颜色,这些可以问我个人(欢迎在首页扫码添加颜华微信))
    其他代码贴出来,如有错误烦请大家指正,万分感谢(行跪拜礼):
    1.  
      //折线图
    2.  
      //初始化
    3.  
      PNLineChart * lineChart = [[PNLineChart alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, 200.0)];
    4.  
      lineChart.backgroundColor = [UIColor colorWithRed:51/255. green:121/255. blue:242/255. alpha:1];
    5.  
      //设置横坐标
    6.  
      [lineChart setXLabels:@[@"",@"",@"",@"",@""]];
    7.  
      //设置纵坐标
    8.  
      [lineChart setYLabels:@[@"",@"",@"",@"",@""]];
    9.  
      //设置是否显示Y轴的数值
    10.  
      lineChart.showGenYLabels = NO;
    11.  
      //设置是否显示横向虚线
    12.  
      lineChart.showYGridLines = NO;
    13.  
      //设置轴的颜色
    14.  
      lineChart.axisColor = [UIColor whiteColor];
    15.  
      //设置轴的宽度
    16.  
      lineChart.axisWidth = 2.0f;
    17.  
      //设置y轴坐标的颜色
    18.  
      lineChart.yLabelColor = [UIColor whiteColor];
    19.  
       
    20.  
      //第一条折线
    21.  
      //初始化数组是折线节点数据
    22.  
      NSArray * data01Array = @[@21, @21, @23, @24, @23];
    23.  
      //折现图数据 类 包括颜色 节点数量 数据的设置
    24.  
      PNLineChartData *data01 = [PNLineChartData new];
    25.  
      //设置折线的颜色
    26.  
      data01.color = PNWhite;
    27.  
      //设置折线的宽度
    28.  
      data01.lineWidth = 0.8;
    29.  
      //设置折线的点数
    30.  
      data01.itemCount = data01Array.count;
    31.  
      //设置折点的样式
    32.  
      data01.inflexionPointStyle = PNLineChartPointStyleCircle;
    33.  
      //设置折点的颜色
    34.  
      data01.inflexionPointColor = [UIColor whiteColor];
    35.  
      //设置折点的大小
    36.  
      data01.inflexionPointWidth = 3.0f;
    37.  
      //设置是否展示折点的Label
    38.  
      data01.showPointLabel = YES;
    39.  
      //设置折点的文本颜色
    40.  
      data01.pointLabelColor = [UIColor whiteColor];
    41.  
      //设置折点的文本字体
    42.  
      data01.pointLabelFont = [UIFont systemFontOfSize:12];
    43.  
      //展示数据
    44.  
      data01.getData = ^(NSUInteger index) {
    45.  
      CGFloat yValue = [data01Array[index] floatValue];
    46.  
      return [PNLineChartDataItem dataItemWithY:yValue];
    47.  
      };
    48.  
       
    49.  
      //折线图的图标数据
    50.  
      lineChart.chartData = @[data01];
    51.  
      //设置
    52.  
      lineChart.yValueMin = 20;
    53.  
      lineChart.yValueMax = 30;
    54.  
      //是否展示平滑线条
    55.  
      lineChart.showSmoothLines = YES;
    56.  
      //是否显示坐标轴
    57.  
      lineChart.showCoordinateAxis = NO;
    58.  
      //开始绘制折线图
    59.  
      [lineChart strokeChart];
    60.  
       
    61.  
      //将折线图添加到视图上
    62.  
      [self.view addSubview:lineChart];


    2.柱状图
     
    这个地方y轴的文字高度有在PNChart代码内部调整。
    PNBarChart主要属性代码展示:
    1.  
      //初始化一个柱状图
    2.  
      PNBarChart *barChart = [[PNBarChart alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, 200)];
    3.  
      //设置x的值
    4.  
      [barChart setXLabels:@[@"SEP 1",@"SEP 2",@"SEP 3",@"SEP 4",@"SEP 5"]];
    5.  
      //设置y的值
    6.  
      [barChart setYValues:@[@1, @10, @2, @6, @3]];
    7.  
      //设置是否显示坐标轴
    8.  
      barChart.showChartBorder = YES;
    9.  
      //设置柱子的圆角
    10.  
      barChart.barRadius = 5;
    11.  
      //设置柱子的宽度
    12.  
      barChart.barWidth = 40;
    13.  
      //设置渲染颜色
    14.  
      barChart.strokeColor = [UIColor colorWithRed:51/255. green:121/255. blue:242/255. alpha:1];
    15.  
      //设置是否立体显示(有一个渐变色的效果)
    16.  
      barChart.isGradientShow = NO;
    17.  
      //设置是否显示数值
    18.  
      barChart.isShowNumbers = NO;
    19.  
      //开始绘制图标
    20.  
      [barChart strokeChart];
    21.  
      [self.view addSubview:barChart];
     

    3.环状图
    显示百分比 
    显示美元 
    显示浮点数 
     
    PNCircleChart相对比较简单,主要的几个属性在init的过程中就设置了。
    1.  
      //初始化一个环状图
    2.  
      PNCircleChart *circleChart = [[PNCircleChart alloc] initWithFrame:CGRectMake(0, 74, 200, 200) total:@100 current:@10 clockwise:YES shadow:YES shadowColor:[UIColor lightGrayColor] displayCountingLabel:YES overrideLineWidth:@20];
    3.  
      circleChart.center = self.view.center;
    4.  
      //设置环状图的类型(显示百分比等)
    5.  
      circleChart.chartType = PNChartFormatTypePercent;
    6.  
      //设置环状图的渲染颜色
    7.  
      circleChart.strokeColor = [UIColor colorWithRed:51/255. green:121/255. blue:242/255. alpha:1];
    8.  
      //绘制环状图
    9.  
      [circleChart strokeChart];
    10.  
       
    11.  
      [self.view addSubview:circleChart];

    4.饼状图
     
    饼状图这里我用了三原色的原色,看起来可能有点辣眼睛,观影出现不适本人概不负责···
     
    饼状图最重要的参数就是一个盛放item的数组。在init之前需要准备好。
    另外一个独有的就是 图例 视图。
    1.  
      //初始化一个饼状图
    2.  
      //设置饼状图的数据数组
    3.  
      NSArray *items = @[[PNPieChartDataItem dataItemWithValue:20 color:[UIColor redColor] description:@"颜华"],[PNPieChartDataItem dataItemWithValue:40 color:[UIColor greenColor] description:@"佳佳"],[PNPieChartDataItem dataItemWithValue:40 color:[UIColor blueColor] description:@"小徐"]];
    4.  
      //初始化
    5.  
      PNPieChart *pieChart = [[PNPieChart alloc] initWithFrame:CGRectMake(0, 64, 200, 200) items:items];
    6.  
      pieChart.center = self.view.center;
    7.  
      //获得图例
    8.  
      UIView *legend = [pieChart getLegendWithMaxWidth:100];
    9.  
      legend.frame = CGRectMake(50, self.view.frame.size.height / 2, legend.bounds.size.width, legend.bounds.size.height);
    10.  
      [self.view addSubview:legend];
    11.  
      //设置是否显示图例
    12.  
      pieChart.hasLegend = YES;
    13.  
      //设置图例样式
    14.  
      pieChart.legendStyle = PNLegendItemStyleSerial;
    15.  
      //设置图例位置
    16.  
      pieChart.legendPosition = PNLegendPositionTop;
    17.  
      //绘制饼状图
    18.  
      [pieChart strokeChart];
    19.  
       
    20.  
      [self.view addSubview:pieChart];

    当然我只是基本的把这些视图做出来了,我还有很多内涵的东西并不熟悉,
    所以希望朋友们有什么要教我的告诉我的可以与我分享,
    也欢迎指出错误,方便我改正。谢谢(行跪拜礼)~
     
    因为不常在博客上,有些问题无法及时回复,大家可以添加我的微信交流问题~
     
  • 相关阅读:
    用户登录设计 单点登录 记住密码等
    相同类名称但不同包启动报错
    IDEA项目搭建十一——添加拦截器、忽略URL大小写、启动事件
    IDEA项目搭建七——使用Feign简化消费者端操作
    java enum使用方法
    IDEA项目搭建十——使用slf4j和logback进行日志记录
    IDEA项目搭建九——MybatisPlus多数据库实现
    IDEA项目搭建八——使用MybatisPlus简化数据库交互
    IDEA项目搭建六——使用Eureka和Ribbon进行项目服务化
    新建Git仓库并关联远程Gitlab
  • 原文地址:https://www.cnblogs.com/itlover2013/p/14327061.html
Copyright © 2011-2022 走看看