绘制折线图

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

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

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

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


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

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

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

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

//绘制横线的起点

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

//绘制横线的距离长度

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

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

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


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


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

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

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


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


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

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

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

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

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

10.现在绘制X轴的文字

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

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

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

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

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


示例 demo:

https://github.com/larra123/linePath


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明: 已将折线图封装到了一个UIView子类中,并提供了相应的接口。若你遇到相应的需求可以直接将文件拖到项目中,...
    AHLQ阅读 7,474评论 5 47
  • 公司的项目要使用到折线图,然后用的是第三方Charts框架,不得不说Charts很强大的一个第三方,几乎所有你想要...
    遥远de年代阅读 38,727评论 104 74
  • 前段时间一个朋友就折线图绘制的需求和我讨论,正好当时我不是很忙,就自己简单写了一个demo,原理是用QuartzC...
    Alphts阅读 277评论 0 0
  • 使用matplotlib可制作的最简单的图表 下面来使用matplotlib绘制一个简单的折线图,再对其进...
    陈容喜阅读 496评论 0 0
  • 首先先看一下效果: 一、 初始化折线图对象 创建一个折线图的用到的类是LineChartView.h, 代码如下:...
    jianshu_wl阅读 20,528评论 50 151