上一篇文章里,我把用sigmoid函数画曲线的原理都讲清楚了,不明白的同学还是要先理解之前的文章。
今天我们学习画最简单的sigmoid曲线图,其实就是折线图的曲线版本。如果基础知识看明白的话,那就很简单了。
创建数据集
Year,Value,Index
1991,51,1
1992,85,2
1993,32,3
1994,36,4
1995,71,5
1996,36,6
1997,52,7
1998,29,8
1999,24,9
2000,6,10
2001,87,11
2002,93,12
2003,42,13
2004,30,14
2005,51,15
2006,87,16
2007,3,17
2008,70,18
2009,42,19
2010,93,20
2011,95,21
2012,87,22
2013,73,23
2014,40,24
2015,77,25
2016,41,26
2017,88,27
2018,26,28
2019,41,29
2020,43,30
随机生成的数据,Year并不太重要,主要是Index决定顺序。
创建计算字段
path=([Index]-1)*49
根据path,创建数据桶
建好的path和path(bin)字段如下:
- X=INDEX()
由于每条曲线都需要49个点,path和path(bin)字段的目的就是横向把Index扩大,给每年之间都留出49个点来画曲线。因为数据桶是维度,不能作为坐标轴使用,所以就需要用Index函数沿着path(bin)计数来构造X轴。
- T=([X]-((WINDOW_SUM(SUM([Index]), -48, 0)-1)*49)-25)/4
T是构造sigmoid函数的关键,T必需是[-6,6]之间。虽然Index被扩大了(也就是X轴),但是通过上述计算,还要把每个Index之间对应的T值转换成±6之间,以保证Y轴计算的正确。
startpoint=WINDOW_MAX(MAX([Value]), -48, 0)
endpoint=WINDOW_MAX(MAX([Value]), 1, 49)
Y=[startpoint]+([endpoint]-[startpoint])/(1+EXP(1)^-[T])
Y轴就是基础知识中说的公式套用。
开始做图
标记选择“线”
把[path(bin)]拖到行或者列功能区,右键看一下是否勾选了“显示缺失值”。勾选后,把这个[path(bin)]拖回到标记里的“路径”上。
path(bin)必需勾选“显示缺失值”,如果没有勾选,path(bin)只有开始和结束两个点,这是很多表计算没有结果的关键因素。
- 把[X]拖到列功能区,[Y]拖到行功能区,表计算依据都选择[path(bin)]
这样,sigmoid曲线图就有了。
当然,我们还可以加个双轴,标记一下数据值。
也可以把标记改成“区域”,做成面积图。
下面可以对坐标轴进行一些处理,保证坐标轴显示正确,可以新建一个计算字段。
X-years=[X]/49+1991
将[X]替换为新计算字段[X-years],编辑轴,去掉“包括零”选项
这样就基本完成一个简单的曲线图制作。
这里的难点就是X轴的构造和根据X值计算T值,也就是把多条曲线横向平移的过程,需要大家多加研究,因为后面复杂一点的图形也都会用到。
此篇文章已发布到我的公众号: saodisir,有兴趣也可关注一下