绘制折线图

>请各位读者添加一下作者的微信公众号,以后有新的文章,将在微信公众号直接推送给各位,非常感谢。实现效果:

>![](http://upload-images.jianshu.io/upload_images/693359-48d9c7c9f56a4b13.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

绘制折线图_第1张图片

代码原型:SHLineGraphView  大家可以自行下载,文档最低部有注释版的示例代码.

示例实现了超过具体数值可以将点替换为特定图片,将竖轴开始的数值从特定数值开始,同时支持多条线段同时绘制.


首先在这里解释一下下面的两个方法,

关于绘制线段,首先需要的就是一个起点,也就是CGPathMoveToPoint

之后我们还需要一个终点,也就是CGPathAddLineToPoint

使用的时候需要注意,第一个参数是你所需要绘制的路径CGMutablePathReflinesPath =CGPathCreateMutable();

//绘制横线的起点

CGPathMoveToPoint(linesPath,NULL, currentLabelPoint.x+ xIntervalInPx/2, currentLabelPoint.y);

//绘制横线的距离长度

CGPathAddLineToPoint(linesPath,NULL, currentLabelPoint.x+ xIntervalInPx/2, currentLabelPoint.y- intervalInPx1);

当我们给定了线段的起点和终点的时候,我们就能够在图层上成功的绘制一条线段了

需要注意,我们绘制线段的起点都是图层的左上角

绘制折线图_第2张图片

1.首先来看主视图中都需要填写什么信息

绘制折线图_第3张图片


绘制折线图_第4张图片

2.之后我们来看实际使用中需要更改的地方SHLineGraphView.m

设置需要顶部和底部的距离

同时设置竖轴最多有多少个点,下面会使用到


绘制折线图_第5张图片

4.之后设置一个X和Y,用于下面保存具体坐标参数


绘制折线图_第6张图片

5.之后开始设置默认的图层

绘制折线图_第7张图片

6.开始绘制折线图,但是在开始前我们首先需要将折线图的位置变成具体的数值

绘制折线图_第8张图片

7.接下来开始绘制 点 ,绘制点我们首先需要三个图层,分别用来存放 逻辑填充图 , 圈层的图层 和 后台的路径.

绘制折线图_第9张图片

8.之后根据具体Y轴的坐标和上方提到的数值个数来计算出每一个文字之间距离

绘制折线图_第10张图片

9.现在添加不同点之间的路径以及绘制折线图时候的动画效果,同时我们也可以把对应点的位置的点击事件添加上去

绘制折线图_第11张图片

10.现在绘制X轴的文字

绘制折线图_第12张图片

11.同理 , 绘制Y轴的提示性文字

绘制折线图_第13张图片

12.当X轴 和Y轴 的提示性文字都已经绘制完成的时候,我们就开始绘制折线图的线了

绘制折线图_第14张图片

13.最后我们还可以将每个点对应的点击事件添加上去

绘制折线图_第15张图片

这时候我们就已经成功绘制了一个折线图了

绘制折线图_第16张图片

之后我们还可以继续完善,例如将折点的线编程一段一段的线段,或者在线段之间可以使用渐变色等.


示例 demo:

https://github.com/larra123/linePath


补充: 折线图的点随着数值变色  在绘制点的方法- (void)drawPlot:(SHPlot*)plot内进行修改

绘制折线图_第17张图片

你可能感兴趣的:(绘制折线图)