我有一个包含13个摄像头的数据集,每个摄像头位置重建了5次。我已将测量值汇总为每个与摄像机位置[X,Y,Z,Omega,Phi,Kappa]相关的6个变量的平均值和标准偏差。我想根据XYZ平均值绘制摄像机的位置,然后根据每个XYZ值的标准偏差值为每个位置创建一个椭圆体。 (就像一个误差条,这也是可以接受的,但我的第一个目标是创建彩色椭圆体,显示最大方差或误差的方向......对于这个例子,我使用的是标准偏差值。)
我使用rgl
绘制每个相机的平均位置,但我不知道如何通过另一个矢量或列的值更改每个绘制点的形状。
位置数据汇总到这里的平均值
pos.mean
PhotoID X Y Z
DSC_7120 -269.697307 -359.608029 2390.520
DSC_7121 -323.537075 -312.080524 2388.374
DSC_7122 -381.084880 -259.807930 2386.175
DSC_7123 -434.500687 -212.438305 2384.080
DSC_7707 -297.275547 -12.954589 2352.626
DSC_7708 -238.105775 -61.327624 2353.830
DSC_7709 -178.910977 -110.464992 2354.912
DSC_7710 -124.471751 -155.745775 2356.300
DSC_7711 -65.107734 -205.164167 2358.239
DSC_7794 -2.828331 9.167357 2308.687
DSC_7795 -61.841640 56.621020 2307.068
DSC_7796 -118.768896 104.237722 2306.107
DSC_7797 -176.829418 150.560971 2304.887
,标准偏差值为:
pos.sd
PhotoID X Y Z
DSC_7120 0.1507733 0.3651178 0.0018517456
DSC_7121 0.1508845 0.3633876 0.0005815413
DSC_7122 0.1512489 0.3671259 0.0021316858
DSC_7123 0.1498382 0.3667440 0.0050629647
DSC_7707 0.1495099 0.3600409 0.0016483624
DSC_7708 0.1470677 0.3583582 0.0014911045
DSC_7709 0.1458569 0.3596208 0.0021194229
DSC_7710 0.1396953 0.3604535 0.0033336396
DSC_7711 0.1414401 0.3620422 0.0047287867
DSC_7794 0.1442061 0.3691425 0.0056096078
DSC_7795 0.1516369 0.3688717 0.0016928413
DSC_7796 0.1565440 0.3672701 0.0038089509
DSC_7797 0.1547617 0.3726132 0.0079183205
目前基本的3D绘图可以这样查看
library(rgl)
with(smry.mean,
plot3d(X, Y, Z,
type="s"))
有没有办法将点更改为彩色椭圆体,其中椭圆体的尺寸和颜色是根据每个点的标准偏差值构建的?
谢谢
答案 0 :(得分:0)
您可以使用ellipse3d
功能执行此操作,但您必须一次绘制一个椭圆体。例如,
for (id in pos.mean$PhotoID)
ellipse3d(diag(pos.sd[id, c("X", "Y", "Z")])^2, centre = pos.mean[id, c("X", "Y", "Z")], col = "red", t = 10)
您希望使用该t
参数来适当地设置比例:与均值范围相比,您的SD值非常小,因此t = 10
可能只是无形地给出小椭圆体。如果是这样,请尝试更大的价值。
另一件事:如果你只知道SD值,你就不会得到最大方差或误差的方向"。这可能需要一个完整的协方差矩阵,而不是我构造的对角矩阵。