用PNChart绘制折线图
写在前面
上一篇文章已经介绍过用PNChart绘制饼状图了,绘制折线图的步骤和饼状图的步骤是相似的,按照中的准备做好准备工作后就可以绘制折线图了。
开始使用
1、在view中声明一个PNLineChart类型的属性 lineChart
@property (strong, nonatomic) PNLineChart *lineChart;
2、在view的初始化函数中对lineChart进行初始化
//初始化
_lineChart = [[PNLineChart alloc] initWithFrame:CGRectMake(self.left, self.top + 40, self.width*2, self.height)];
//设置背景颜色
_lineChart.backgroundColor = [UIColor clearColor];
//设置坐标轴是否可见
_lineChart.showCoordinateAxis = YES;
//设置是否显示网格线
_lineChart.showYGridLines = YES;
//设置网格线颜色
_lineChart.yGridLinesColor = [UIColor grayColor];
//添加到view的试图上
[self addSubviews:_lineChart];
3、设置折线图的横轴标签和数据
//曲线数据
PNLineChartData *data = [PNLineChartData new];
//数据点颜色
data.color = PNGreen;
//数据点格式
data.inflexionPointStyle = PNLineChartPointStyleCircle;
//设置数据标注名称
data.dataTitle = @"周收入";
//设置X轴标签
NSArray *xLabels = @[@"07-04",@"07-05",@"07-06",@"07-07",@"07-08",@"07-09",@"07-10"];
[self.lineChart setXLabels:xLabels];
//设置Y轴数据
NSArray *dataArray = @[@4,@8,@7,@4,@9,@6,@5];
data.itemCount = dataArray.count;
data.getData = ^(NSUInteger index){
CGFloat yValue = [dataArray[index] floatValue];
return [ PNLineChartDataItem dataItemWithY:yValue];
};
self.lineChart.chartData = @[data];
//绘制曲线
[self.lineChart strokeChart];
//设置标注
self.lineChart.legendStyle = PNLegendItemStyleStacked;//标注摆放样式
self.lineChart.legendFont = [UIFont boldSystemFontOfSize:12.0f];
[self.legend removeFromSuperview];
self.legend = [self.lineChart getLegendWithMaxWidth:200];
CGFloat legendX = self.left + 30;
CGFloat legendY = self.bottom - 40;
[self.legend setFrame:CGRectMake(legendX, legendY, self.legend.frame.size.width, self.legend.frame.size.height)];
[self addSubview:self.legend];
绘制结果

总结
整理出来的时候感觉还是挺容易的,网上也有很多相应的教程,但在实际使用的时候还是挺多波折的。也许是基础的使用不难,但要根据自己的需求做一定的改动的时候,就会变得不那么容易了,因此这也是我觉得比较有感触的地方吧,不能简单的照搬网上已有的代码,哪怕网上已有的代码和自己想要的效果和相似,也有先单独建立一个空白的项目测试一下,不要一开始就直接将搜索带的代码添加到自己的项目中,否者出现问题的时候,要排查是由于新加入的代码引起的错误,还是原本的项目中的代码引起的错误就会变得困难。建立空白项目来测试新代码还有一个好处就是可以比较快的理解整个代码的流程。
总而言之,继续努力啦~
用PNChart绘制折线图的更多相关文章
- 用canvas绘制折线图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php中用GD绘制折线图
php中用GD绘制折线图,代码如下: Class Chart{ private $image; // 定义图像 private $title; // 定义标题 private $ydata; // 定 ...
- UUChart的使用--iOS绘制折线图
UUChart是一个用于绘制图表的第三方,尤其适合去绘制折线图. 二.下载地址: https://github.com/ZhipingYang/UUChartView 三.使用 第一步.首先我们将下载 ...
- html5绘制折线图
html5绘制折线图详细代码 <html> <canvas id="a_canvas" width="1000" height="7 ...
- Android自己定义组件系列【9】——Canvas绘制折线图
有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了非常多插件,可是非常多时候我们须要依据详细项目自己定义这些图表,这一篇文章我们一起来看看怎样在Android中使用Can ...
- JFreeChart绘制折线图实例
JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. package c ...
- 【带着canvas去流浪】(2)绘制折线图
目录 一. 任务说明 二. 重点提示 三. 示例代码 3.1 一般折线图 3.2 用贝塞尔曲线绘制平滑折线图 四. 大数据量场景 示例代码托管在:https://github.com/dashnowo ...
- python使用matplotlib绘制折线图教程
Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...
- Android自定义控件 -Canvas绘制折线图(实现动态报表效果)
有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了很多插件,但是很多时候我们需要根据具体项目自定义这些图表,这一篇文章我们一起来看看如何在Android中使用Canvas ...
随机推荐
- ElasticSearch搜索介绍四
ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, &quo ...
- CF786B Legacy && 线段树优化连边
线段树优化连边 要求点 \(x\) 向区间 \([L, R]\) 连边, 一次的复杂度上限为 \(O(n)\) 然后弄成线段树的结构 先父子连边边权为 \(0\) 这样连边就只需要连父亲就可以等效于连 ...
- 面向对象【day08】:问答式面相对象(四)
本节内容 1.什么是面向对象编程 2.什么是市类?什么是对象?又有什么关系? 3.什么时候适用面向对象? 4.self就是调用当前方法的对象 5.封装.继承.多态 6.字段方法 1.什么是面向对象编程 ...
- python---memcache基本使用以及内部原理
简单使用: import memcache mc = memcache.Client(['127.0.0.1:8081','127.0.0.1:8082','127.0.0.1:8083','127. ...
- WinForm ListView虚拟模式加载数据 提高加载速度
将VirtualMode 属性设置为 true 会将 ListView 置于虚拟模式.控件不再使用Collection.Add()这种方式来添加数据,取而代之的是使用RetrieveVirtualIt ...
- Java编程思想 学习笔记8
八.多态 在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征. 多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来. “封装”通过合并特征和行为来创建新的数据类型.“实现 ...
- 【转载】Etcd+Confd实现Nginx配置文件自动管理
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lizhenliang.blog.51cto.com/7876557/191015 ...
- QDialog对话框
QDialog对话框,用来实现那些只是暂时存在的用户界面,是独立的窗口,但通常也有父窗口对话框有模态和非模态两种,,非模态对话框的行为和使用方法都类似于普通的窗口,模态对话框则有所不同,当模态对话框显 ...
- CF875D High Cry
传送门 题目要求合法的区间个数,这里考虑用总区间个数减去不合法的个数 假设某个数为区间最大值,那么包含这个数的最长区间内,所有数小于他并且所有数没有这个最大值没有的二进制位,可以按位考虑每个数\(i\ ...
- Linux新增用户过程详解
Linux系统中,当使用useradd添加用户时,会将系统的/etc/skel目录下的所有文件复制到新添加用户的家目录中.该目录下的所有文件都是隐藏文件(以.点开头的文件). 通过修改.添加.删除/e ...