关于质数分布的可视化分析
一、选手简介
1、选手介绍
- 帆软社区用户名:schy,一位信息化工作者,对信息化工具提升工作效率和可视化工具实现数据分析非常感兴趣!
2、参赛初衷
- FineBI一直是我十分关注的数据分析工具,我希望通过比赛实践提升FineBI的使用方法和技巧,同时也希望通过参赛与技术专家交流,当然也希望能获得认可和奖励。
二、作品介绍
1、分析背景
- 质数的分布规律一直是一个让人琢磨不透但又魅力十足的问题,之前通过很多资料已经有了一定的了解,但是我自己从来没有着手做过相关的分析和研究,这次我希望通过FineBI对质数的分布进行可视化的分析和展示发现一些新的东西。
2、数据来源
- 由于本次分析的基础数据是质数和自然数,因此我先通过wps获取到了1-100000的自然数序列,然后使用wps通过编辑js脚本创建了一个质数判断函数,最终应用该函数生成了1-100000内的质数表,由于函数是迭代计算的,随着数据增大计算压力越来越大,这10万自然数的指数判断就让电脑计算了好几分钟。如果需要更大的数据集可能要考虑更较有效率的其他方法,本次由于分析目标就是10万以内的自然数和质数分布,所以wps工具刚好能够满足。
- 具体操作截图如下:
3、分析思路
质数在自然数中的分布看似毫无规律,但是如果我们用可视化的手段用不同的视角进行透视并与类似质数分布的一组随机数进行比对可以看出两者的区别。针对这一目的,我制定了如下的分析计划:
- 1、通过在直角坐标系内质数分布的展示,可以看到质数螺旋的图形,包括正四边形螺旋和极坐标螺旋。
- 2、我还想针对之前从来没有尝试过的正六边形螺旋分布进行可视化的展示和探索。
- 3、然后我还想验证一下质数定理与真实质数个数曲线的拟合情况。并按照5000一个统计区间针对质数个数和质数间隔的平均值进行展示,看看递增递减的规律,并把尾数为1,3,7,9的质数在区间内的分布分别展示出来,看看情况如何。
- 4、最后再依据不同的质数间隔按照渐进色和热力色的展示分布规律图,探索一下质数间隔的特征。
4、数据处理
- 为了满足我的分析思路进行的展示,我对质数基础数据进行了如下数据处理
- (1)、我在WPS中利用随机函数公式,获取到了一个类似质数分布表的随机序列,用来做与真正质数分布的对比分析。
- (2)、我利用WPS公式生成了每个自然数按照极坐标螺旋方式展开的每个点对应的平面坐标,为后期生成极坐标螺旋分布图做准备。
- (3)、我利用WPS公式生成了每个自然数按照四角螺旋方式展开的每个点对应的平面坐标,为后期生成四角螺旋分布图做准备,通过观察和总结坐标变化规律,完成了平面坐标的公式计算,具体操作截屏如下:
- (4)、我利用WPS公式生成了每个自然数按照六边形螺旋方式展开的每个点对应的平面坐标为后期生成六边形螺旋分布图做准备,编制公式的过程中,使用了一些原始的找规律的方法,最后形成了通过定义顶点六个旋转方向坐标值变化的方法完成了全部自然数在正六边形螺旋平面坐标的计算,具体过程截图如下:
- (5)、我利用WPS公式生成了每个2个质数间的距离并把这个值赋值给区间涉及的所有自然数,以便后期分析具体的指数间距离的分布情况。
- (6)、我利用FineBI的数据处理工具生成了质数定理相关的X/Ln(X)值和质数个数累计值,并针对自然数进行了5000个一组的分组,针对以1,3,7,9结尾的质数进行了标记,为后期分析各区间质数数量和质数间距离对比做好了准备,具体操作截屏如下:
5、可视化报告
(1)极坐标质数分布图展示和对比组件构建
- 该系列组件是用平面极坐标的形式是把自然数作为半径和弧长,并让半径与弧长相等,从而得到每个旋转后的横坐标和纵坐标,这样能够形成一个随着旋转不断增大半径的由多个点构成的螺旋图形,然后在这个图形中将质数保留,组件能够体现出质数分布按照极坐标形式分布的一些显著特征。
- 首先,着个组件需要使用散点图,然后,将细粒度设为单个的自然数,就是在数据中由公式生成的一个由自然数构建的文本字段。这样生成的点就对应了十万个自然数对应的每一条数据。
- 然后把之前计算出来的横坐标和纵坐标拖入横轴和纵轴。
- 再之后把是否为质数字段拖入颜色,并设置非质数为透明色,质数为深蓝色,这样就只保留了质数点的显示,能形成对比鲜明的质数分布螺旋图像。
- 最后将大小设置为0,也就是最小,因为我们平面内会存在10万个点,因此为了保证显示点不重复,需要将点设置为最小才能显示出想要的螺旋效果。下面是设置大小为7的效果,出现了严重的重叠。
- 这里针对5000个自然数和50000个自然数进行了两个不同组件的展示,能够看出随着对应数据的增大,质数的质数螺旋呈现出类似星系的分布效果,出现了一些对称的明显的白色旋臂,非常有趣。
- 5000以内的极坐标质数螺旋组件具体设置截图如下:
- 50000以内的极坐标质数螺旋组件具体设置截图如下:
(2)、平面四边形旋转质数分布图展示和随机数据的对比组件构建
- 该系列组件是用平面极直角的形式是把自然数作为按照四边形旋转的方式排列,这样能够形成一个随着旋转不断增大的由多个点构成的多个同心四边形嵌套的图形,然后在这个图形中将质数保留,组件能够体现出质数分布按照这种四边形旋转形式分布的一些显著特征。并且在将质数替换成随机数据后,可以生成随机数据的四边形转转图形,与质数图形可以进行对比。
- 这两个组件也需要使用散点图,然后,将细粒度设为和极坐标展示一样的字段。并将横纵坐标改为之前计算出来的四角坐标数据的横坐标和纵坐标。
- 之后同样把是否为质数字段拖入颜色,并设置非质数为透明色,质数为深蓝色,这样就只保留了质数点的显示,能形成对比鲜明的质数分布螺旋图像。在对于随机数组件展示的时候,将这个颜色改为随机数的数据,其他设置和质数展示组件一致。
- 最后也将大小设置为0。
- 平面四边形质数螺旋组件具体设置截图如下:
这里可以明显的看出随机数据显得杂乱无章没有任何规律,但质数的图形却呈现出一中十分有规律的分布,会有明显的在某个角度的汇聚明显的点聚集形成连线,两图在视觉上呈现出明显的分布规律差异。这说明质数的分布也不是完全随机和杂乱无章的,只是我们还没有找到它真实的规律。
(3)、平面六边形旋转质数分布图展示和随机数据的对比组件构建
- 以上组件在互联网上都能看到,这回我想尝试一下不一样的展示效果。
- 这一系列组件是用平面极直角的形式是把自然数作为按照正六边形旋转的方式排列,这样能够形成一个随着旋转不断增大的由多个点构成的多个同心六边形嵌套的图形,然后在这个图形中将质数保留,组件能够体现出质数分布按照这种正六边形旋转形式分布的一些特征。并且在将质数替换成随机数据后,可以生成随机数据的正六边形转转图形,与质数图形可以进行对比。
- 这类组件仍使用散点图,将细粒度设为和之前一致。并将横纵坐标改为之前计算出来的正六边形分布的坐标数据的横坐标和纵坐标。
- 颜色设置与之前四边形分布一致。
- 最后也将大小设置为0。
- 平面正六边形质数螺旋组件具体设置截图如下:
- 平面正六边形类指数随机数螺旋组件具体设置截图如下:
通过这两个组建的图形对比,呈现出了更加明显的图形规律性对比,对于质数分布,在六边形的六个象限内,出现了非常明显的分布规律,尤其是在X轴正向的分布,全部质数都分布在趋于平行于X轴的若干条线上,而在其他象限也会出现很多明显的聚集线条。
但是随机数的图像就是毫无规律,偶尔出现一些数据堆积的聚集区域。这进一步证明了质数的分布是有很强的规律性的,但是规律性又十分的怪异,在不同的展示方式下呈现出的规律性也不尽相同。
(4)、质数定理拟合验证组件构建
- 这一系列组件是通过对小于每个自然数内质数个数的质数定理进行验证,查看实际的估算偏离。
- 该组件仍使用散点图,将细粒度设为和之前一致。并将横纵坐标改为自然数序列,纵坐标添加两个指标,分别是质数定理的估算数值和之前计算的真实的质数数量累计值。
- 颜色设置与之前四边形分布一致。
- 显示的大小设置为0。
- 质数定理拟合验证组件具体设置截图如下:
从图像可以看出,随着数据的增大,质数定理的估算值与实际质数个数相差还是非常大的,难怪后期人们又研究出了很多更精确的近似拟合,但是最好的拟合还是黎曼假设的结论,只可惜这个假设还没有被证明是定理。
(5)、1、3、7、9结尾的质数按区间数量统计对比的组件构建
- 该系列组件是用进行不同自然数结尾的质数分布规律的对比。
- 该组件使用柱状图,然后,将横轴设为分组区间,按照5000一个统计区间,十万个数据被分为了20个区间,然后将之前统计的尾数转化成维度,也放在横轴,从而形成需要的柱状图统计,纵轴为质数个数指标。颜色中拖入尾数维度,设置不同分组的颜色,尾数为1的设置为红色,尾数为3的设置为绿色,尾数为7的设置为黄色,尾数为9的设置为蓝色。
- 1、3、7、9结尾的质数按区间数量统计对比的组件设置截图如下:
这里可以看出各区间的以1,3,7,9结尾的个数变化较大,数量没有什么变化规律,但是总体来看,个数分布是均匀的。没有那个数特别的领先。质数以不同数字结尾的分布整体呈均匀性,但是在给定区间内的数量是随机分布的。
(6)、相邻给定区间质数数量和质数间距平均值的统计对比组件构建
- 该系列组件是对连续区间内的质数个数和质数间距平均值的分布规律的对比。
- 该组件使用分区直线图,以实现两组数据的对比。
- 将横轴设为分组区间,按照5000一个统计区间,十万个数据被分为了20个区间。
- 然后将之前统计的质数个数指标和间距指标拖入纵轴,这里质数个数使用求和汇总,间距使用平均值汇总,从而清晰的进行趋势对比。
- 相邻给定区间质数数量和质数间距平均值的统计对比组件设置截图如下:
从图形可以看出,分区的质数个数和间距均随着自然数的增大有所下降,但是在相邻的区间会存在波动的情况。数据的下降并不是平滑的。而平均间距的指标也存在类的情况,且与质数个数变化并不完全一致,少部分区域曲线变化的方向一致,大部分曲线变化方向相反。
(7)、平面四边形和六边形质数间距分布对比组建的构建
- 这一系列组件是用平面极直角的形式是把质数间距的变化用渐变色的形式进行展示
- 本组件也采用散点图,具体细粒度和坐标轴的设置与之前正四边形分布和正六边形分布的设置一样。
- 颜色设置中,将之前数据准备阶段计算出的间距指标拖入,然后选择由浅黄到深红的渐变颜色,按照区间进行自定义颜色。用颜色加深色表示质数间距离的增大,这里主要把小距离的数字用更多的渐变色展示,从而展示小距离间距质数的分布规律。
- 最后为了更好的展示这10万条数据也将大小设置为0。
- 正四边形旋转质数分距离布图渐变色图组件配置截图如下:
- 正六边形旋转质数分距离布图渐变色图组件配置截图如下:
从以上图形可以看出,在这10万自然数内,质数的间距呈现出近似周期性的波动,总体距离虽然逐渐增大,但是小距离的间距仍然不断的在数值变大后不断的涌现出来。这也让我联想到对孪生素数猜想和三胞胎、四胞胎素数等问题的一些结论的支撑。
同时这个质数间距的变化构成的图形也很耐看,如果六边形分布换成热力色图形效果如下:
(2)通过分析得出的结论
- 通过数据可视化的展示可以形象的展示数字间的规律,BI是一个非常好的分析手段和发现解决问题的工具。
- 通过观察极坐标的质数分布以及在四边形和六边形分布中质数与随机数的分布对比,发现质数的分布的确存在某种特殊的规律,质数分布图像中存在很多规律性的线状结构,但是随机数据却没有呈现出来。
- 另外,在六边形展示中,图像在每个六边形长边对应的区间内呈现出多种不一样的规律,且线的分布和形状均有一些明显的走向痕迹。
- 通过质数间距离的热力图展示,能看出质数分布图中从内圈到外圈相邻两个质数的间距呈现出较有规律性的周期性变化,且随着数据值的增大越来越大,小间距质数对会不断地涌现。
- 同时通过可视化的分析,通过对不同颜色的搭配和使用,也可以得到很多令人意想不到的数据图像结构,有些甚至能够给人以艺术作品一样的美感。
- 下面这个质数六边形距离分布图我准备把他打印出来,作为一个艺术品收藏了:),就起名为“质数分布立方体”吧!
(3)最终结果呈现的页面布局
公共链接仪表板访问地址如下:
https://bisolutions.fanruan.com/webroot/decision/link/Brmm
最终仪表板页面导出图如下:
三、参赛总结
1、功能和期望
- 通过这次尝试,验证了BI对十万个自然数内质数分布的可视化展示分析的任务成功胜任,但是在十万条数据散点图的组件中调用的大数据模式不是默认开启的,系统在前端展示考虑到速度和体验,默认只展示前5000条数据。而且在仪表盘调用大数据模式也无法人为干预,因此打开仪表盘偶尔会出现某个或某几个组件无法正常显示的情况,应该是这些组件大数据模式资源没有获取到的原因,而获取到资源的组件也需要等待较长的加载时间,但是如果仅用于分析某个问题,单个组件对分布的展示已经可以完全实现分析的目的,也希望今后BI能提供一个稳定的大数据分析的强制模式,毕竟为了一个关键的结果哪怕进行漫长等待也是可以接受的!
- 最后希望FineBI越来越强大,能够胜任更加广泛和复杂的分析场景,能够提供更好的实时性能,我感觉可以考虑一下加入GPU的并行计算显示加速技术,从而进一步提升视觉展示效果和效率。能够为大数据分析提供更多的可能。
2、感谢和感悟
- 参赛期间进行了很多的测试和探索,大赛导师有问必答给予我很多的帮助,让我少走了很多弯路。我虽然考取了BI高级证书,但是现在BI的发展太快了,稍不留神就又冒出有好多新的东西需要学,BI数据分析真是学无止境。
- 这次的尝试和分析让我收获了很多,尤其是第一次看到质数六边形分布的可视化展示着实让我意想不到,真希望有生之年能够看到指数的分布规律被人类破解,或者是能看到黎曼猜想被证明出来,说来我这也是太贪心了,哈哈!
|