大家好啊,失踪人口回归了,惊不惊喜,意不意外。在嘉年华现场提完对FineBI的新增个性化图表需求后,终于如愿收到了“一年内不考虑”的答复,而早就黔驴技穷的我,也因此陷入了沉积。
中途回了趟老家湖北,自然是去胡吃海喝,湖北的美食确实能吃一周不重样,而且无意中看到了这张图:
阿基米德螺线(Archimedean spiral),亦称“等速螺线”。当一点P沿动射线OP以等速率运动的同时,这射线又以等角速度绕点O旋转,点P的轨迹称为“阿基米德螺线”。它在我们身边随处可见,比如这个:
噢,不好意思,拿错图了,我是想说这个:
星云锁链是日本动漫《圣斗士星矢》中青铜圣斗士五小强之一的仙女座瞬所拥有的防御性武器。用来抵挡外界的一切攻击,以及进攻时使用的武器。其中圆锁用来防御,而角锁用来进攻。星云锁链能抵挡住很多攻击,但遇到小宇宙超强的人,就会被敌人反控制住……
噢,等等,好像偏题了,我说的是阿基米德螺旋线。
作者是我的偶像阿基米德:
阿基米德(希腊语:′Αρχιμήδης;前287年-前212年),希腊化时代的数学家、物理学家、发明家、工程师、天文学家。出生于西西里岛的锡拉库扎,据说他在亚历山大求学时期,发明了阿基米德式螺旋抽水机,今天的埃及仍在使用。第二次布匿战争时,罗马大军围攻锡拉库扎,阿基米德死于罗马士兵之手。阿基米德对数学和物理学的影响极为深远,被视为古希腊最杰出的科学家。美国数学史学家埃里克·坦普尔·贝尔在其《数学大师》一书中将阿基米德与牛顿和高斯并列为有史以来最伟大的三位数学家。
而他藉由此原理发明的阿基米德式螺旋抽水机(英语:Archimedes screw 或screw pump)是一种水泵,应用螺旋机制,借着螺旋曲面绕着旋转轴做旋转运动,将水从低处传输至高处。它也是历史上第一个将水从低处传往高处,用于灌溉的机械。
emmm,不过,要论极坐标的图,BI绘制能力其实很弱,我们熟悉的饼图,甚至都是在直角坐标系下生成的,这个图到底该怎么做呢。
其实也不难,要知道,极坐标系和直角坐标系是可以转换的(论坛没法显示希腊字母,我直接截图吧):
而阿基米德螺旋线图的公式如下:
我们只需要把想生成极坐标方式转换成笛卡尔坐标,理论上就可以画出来,下面看我直接动手吧。
1.构建数据集:
数据集毕竟简单,随便编了两列,一列名称,一列数量,非常清晰对吧(我这里表格的行数是36的倍数,这样的话计算角度时是整数,比较容易理解,但其实任意数量都支持的):
想下载的点这里:
想吃的美食.xlsx
(9.25 KB, 下载次数: 131)
2.上传至FineBI,选择全部字段:
3.新增一列计算排名:
4.为了计算角度方便,我们希望排名从0开始,再新增一列,对排名-1,取名为【排名修正】:
5.对排名取最大值,这样是为了计算数据集的行数:
6.新增列,取名为【角度】:
7.对角度字段取模:计算公式如下,把大于360的角度变成0-360的数值:
8.三角函数只能计算弧度,因此我们使用radians函数,计算角度对应的弧度值:
9.根据阿基米德螺旋线的公式,分别计算X和Y的坐标:
这里的公式做个简单的解释,x=(α+βθ)*cos(θ),θ表示角度,在此处显示的是弧度;参数α用来控制螺线的旋转,是一个递增的等差数列,此处我们为方便理解,使用了排名的数值 ;而参数β用来控制螺线之间的间隔,此处我们取1,公式中进行的乘法计算,因此省略书写。
10.好了,数据准备完毕,接下来就是水到渠成了,选择自定义图表,把X拖入横轴,Y拖入纵轴,数量拖入颜色和大小,名称拖入连线。是不是很乱,不用害怕,很快就完成了:
11.把名称按照数量升序排列一下,惊不惊喜,意不意外?
12.调整一下标签和颜色等细节,大功告成:
补充:
1.通过这次尝试,解锁了极坐标系的大门,接下来我可能会继续研究一些更奇特的玩意儿。
2.本主题使用了一种可复用的模式,用户只需调整起始角度、线圈数量便可自行绘制出个性化的螺旋图。
3.x=(α+βθ)*cos(θ)是转换的核心,不同的参数用于调整螺旋线的形状。
4.不是谁都喜欢这样的图形,比如某位大家熟悉的帆软员工(为了本人人身安全隐去她的头像)。实际使用中可以搭配其他配色:
而用散点图也可以达到不错的效果:
5.这个图用曲线显示会很丑,弧线居然只能内旋,希望帆软的图表组能考虑这个需求:
6.finebi的产品经理们不再考虑一下我提的其他图表需求吗……?
7.欢迎大家都来我的故乡湖北玩。
思考题:
1.斐波那契螺旋线图有人想挑战一下吗
2.FineReport做会不会更好看? 编辑于 2021-7-5 15:51
|