不要问我为什么这么多时间写博客。我不会告诉你们的。
我们的项目是外包出去的,外包反馈给我们的天气界面显示温度的曲线十分平滑美观,
甚是好奇,于是请教了一番,方才知道PNChart这个来自中国大神的开源神器。
于是有了这篇文章····
我知道我有那么一点点“高产”····
但是请大家理解我求知若渴,又想分享给大家的心情好不好(此处卖个萌)。
//折线图
//初始化
PNLineChart * lineChart = [[PNLineChart alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, 200.0)];
lineChart.backgroundColor = [UIColor colorWithRed:51/255. green:121/255. blue:242/255. alpha:1];
//设置横坐标
[lineChart setXLabels:@[@"",@"",@"",@"",@""]];
//设置纵坐标
[lineChart setYLabels:@[@"",@"",@"",@"",@""]];
//设置是否显示Y轴的数值
lineChart.showGenYLabels = NO;
//设置是否显示横向虚线
lineChart.showYGridLines = NO;
//设置轴的颜色
lineChart.axisColor = [UIColor whiteColor];
//设置轴的宽度
lineChart.axisWidth = 2.0f;
//设置y轴坐标的颜色
lineChart.yLabelColor = [UIColor whiteColor];
//第一条折线
//初始化数组是折线节点数据
NSArray * data01Array = @[@21, @21, @23, @24, @23];
//折现图数据 类 包括颜色 节点数量 数据的设置
PNLineChartData *data01 = [PNLineChartData new];
//设置折线的颜色
data01.color = PNWhite;
//设置折线的宽度
data01.lineWidth = 0.8;
//设置折线的点数
data01.itemCount = data01Array.count;
//设置折点的样式
data01.inflexionPointStyle = PNLineChartPointStyleCircle;
//设置折点的颜色
data01.inflexionPointColor = [UIColor whiteColor];
//设置折点的大小
data01.inflexionPointWidth = 3.0f;
//设置是否展示折点的Label
data01.showPointLabel = YES;
//设置折点的文本颜色
data01.pointLabelColor = [UIColor whiteColor];
//设置折点的文本字体
data01.pointLabelFont = [UIFont systemFontOfSize:12];
//展示数据
data01.getData = ^(NSUInteger index) {
CGFloat yValue = [data01Array[index] floatValue];
return [PNLineChartDataItem dataItemWithY:yValue];
};
//折线图的图标数据
lineChart.chartData = @[data01];
//设置
lineChart.yValueMin = 20;
lineChart.yValueMax = 30;
//是否展示平滑线条
lineChart.showSmoothLines = YES;
//是否显示坐标轴
lineChart.showCoordinateAxis = NO;
//开始绘制折线图
[lineChart strokeChart];
//将折线图添加到视图上
[self.view addSubview:lineChart];
//初始化一个柱状图
PNBarChart *barChart = [[PNBarChart alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, 200)];
//设置x的值
[barChart setXLabels:@[@"SEP 1",@"SEP 2",@"SEP 3",@"SEP 4",@"SEP 5"]];
//设置y的值
[barChart setYValues:@[@1, @10, @2, @6, @3]];
//设置是否显示坐标轴
barChart.showChartBorder = YES;
//设置柱子的圆角
barChart.barRadius = 5;
//设置柱子的宽度
barChart.barWidth = 40;
//设置渲染颜色
barChart.strokeColor = [UIColor colorWithRed:51/255. green:121/255. blue:242/255. alpha:1];
//设置是否立体显示(有一个渐变色的效果)
barChart.isGradientShow = NO;
//设置是否显示数值
barChart.isShowNumbers = NO;
//开始绘制图标
[barChart strokeChart];
[self.view addSubview:barChart];
//初始化一个环状图
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];
circleChart.center = self.view.center;
//设置环状图的类型(显示百分比等)
circleChart.chartType = PNChartFormatTypePercent;
//设置环状图的渲染颜色
circleChart.strokeColor = [UIColor colorWithRed:51/255. green:121/255. blue:242/255. alpha:1];
//绘制环状图
[circleChart strokeChart];
[self.view addSubview:circleChart];
//初始化一个饼状图
//设置饼状图的数据数组
NSArray *items = @[[PNPieChartDataItem dataItemWithValue:20 color:[UIColor redColor] description:@"颜华"],[PNPieChartDataItem dataItemWithValue:40 color:[UIColor greenColor] description:@"佳佳"],[PNPieChartDataItem dataItemWithValue:40 color:[UIColor blueColor] description:@"小徐"]];
//初始化
PNPieChart *pieChart = [[PNPieChart alloc] initWithFrame:CGRectMake(0, 64, 200, 200) items:items];
pieChart.center = self.view.center;
//获得图例
UIView *legend = [pieChart getLegendWithMaxWidth:100];
legend.frame = CGRectMake(50, self.view.frame.size.height / 2, legend.bounds.size.width, legend.bounds.size.height);
[self.view addSubview:legend];
//设置是否显示图例
pieChart.hasLegend = YES;
//设置图例样式
pieChart.legendStyle = PNLegendItemStyleSerial;
//设置图例位置
pieChart.legendPosition = PNLegendPositionTop;
//绘制饼状图
[pieChart strokeChart];
[self.view addSubview:pieChart];