计算几何
数学表达式用户指南的这一部分介绍了计算几何函数。
凸包
凸包是包含数据集的最小凸点集。数学表达式支持计算 2D 数据集的凸包。计算出凸包后,可以将一组数学表达式函数应用于几何描述和可视化凸包。
可视化
convexHull
函数可用于可视化一组 2D 点周围的边界。边界可视化对于理解数据点相对于边界的位置非常有用。
在下面的示例中,convexHull
函数用于可视化 NYC311 投诉数据库中老鼠目击事件的一组经度和纬度点周围的边界。可以对老鼠目击事件周围的边界进行调查,以更好地了解老鼠可能如何进入或离开特定区域。
散点图
在可视化凸包之前,通常将 2D 点可视化为散点图会很有用。
在此示例中,random
函数从 NYC311(投诉数据库)集合中抽取样本记录,其中投诉描述与“老鼠目击事件”匹配,邮政编码为 11238。然后将经度和纬度字段向量化,并以经度为 x 轴,纬度为 y 轴绘制为散点图。
从散点图中可以看出,许多点似乎位于绘图的边界附近。
凸包图
convexHull
函数可用于可视化边界。该示例使用从 NYC311 数据库中提取的相同点。但是,纬度和经度点不是直接绘制点,而是作为行添加到矩阵中。然后使用 transpose
函数转置矩阵,以便矩阵的每一行都包含一个纬度和经度点。
然后使用 convexHull
函数计算点矩阵的凸包。凸包被设置为名为 hull
的变量。
创建凸包后,可以使用 getVertices
函数检索散点图中构成散点图周围凸包边界的点矩阵。然后可以使用 colAt
函数从矩阵中检索纬度和经度向量,以便可以通过 zplot
函数进行可视化。在下面的示例中,凸包点被可视化为散点图。
请注意,散点图中的 15 个点描述了凸包的纬度和经度点。
外接圆盘
enclosingDisk
函数用于查找包围 2D 数据集的最小外接圆。一旦计算出外接圆盘,就可以应用一组数学表达式函数来几何描述该外接圆盘。
在下面的示例中,为一个随机生成的包含 1000 个 2D 观测值的数据集计算外接圆盘。
然后,对外接圆盘调用以下函数:
-
getCenter
:返回圆盘中心的 2D 点。 -
getRadius
:返回圆盘的半径。 -
getSupportPoints
:返回圆盘的支持点。
let(echo="center, radius, support",
x=sample(normalDistribution(0, 20), 1000),
y=sample(normalDistribution(0, 20), 1000),
observations=transpose(matrix(x,y)),
disk=enclosingDisk(observations),
center=getCenter(disk),
radius=getRadius(disk),
support=getSupportPoints(disk))
当此表达式发送到 /stream
处理程序时,它会响应:
{
"result-set": {
"docs": [
{
"center": [
-6.668825009733749,
-2.9825450908240025
],
"radius": 72.66109546907208,
"support": [
[
20.350992271739464,
64.46791279377014
],
[
33.02079953093981,
57.880978456420365
],
[
-44.7273247899923,
-64.87911518353323
]
]
},
{
"EOF": true,
"RESPONSE_TIME": 8
}
]
}
}