我想使用包plot3D
或persp3D
函数rgl
,并且已经查看了包描述和虚拟数据集"Volcano“。但实际上,我无法用我的数据得出以下结论:
我在3列中列出了一些数据,如
Col1 Col2 Col3
1 0.2 2
2 0.5 5
3 0.6 9
4 19 8
5 1.3 10
6 0.1 60
我想用persp3D
或plot3D
创建一个三维的曲面图。当然,我有更多的数据,但不能在这里列出。正如我在火山图中所看到的(如果我的建议是正确的),火山数据包含数据,像矩阵一样排列。
所以我想,首先,我想把我的数据设置为一个矩阵,比如:
2 5 9 8 10
60 1 0.2 NA NA
NA 2 NA 0.5 NA
3 NA NA 0.6
4 NA NA NA 19
诸若此类
5
6
当然,我看到来自火山的数据矩阵是完整的,而且我有很多NA
。是否有可能根据已经测量到的值之间的模型来计算NA
s ?我认为计算值的确定性正在下降,你计算的离测量值的对角线越远。
所以现在我的问题是:
如何将我的3列放入矩阵样式,以及如何计算丢失的NA
?
提前谢谢你,克里斯
见上文
发布于 2018-12-27 21:02:50
如果实际数据的NA
值与示例矩阵一样多,那么它在rgl::persp3d
中可能不能很好地工作。我建议您坚持使用3列格式,只包括非NA
值。
若要以该格式绘制数据的表面图,请参见https://stackoverflow.com/a/53485406/2554330。简短的版本如下:如果您的数据位于名为df
的dataframe中,代码如下:
library(rgl)
dxyz <- deldir::deldir(x = df$col1, y = df$col2, z = df$col3, suppressMsge = TRUE)
plot3d(dxyz, col = "gray")
发布于 2018-12-27 19:48:37
如果您想要创建一个三维散点图,巧妙的包是一个很好的选择。您可以直接运行下面的代码来创建一个示例图。您只需通过引用x、y、z变量名来指定x、y、z变量(参见数据帧mpg)。
# install.packages("plotly")
library(plotly)
plot_ly(data = mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
add_markers(color = ~cyl, colors = colorRamp(c("yellow", "darkred")),
alpha = 0.7, size = I(1)) %>% colorbar(title = "Cylinder") %>%
layout(title= "3D Scatterplot", scene = list(xaxis = list(title = "CTY"),
yaxis = list(title = "HWY"),
zaxis = list(title = "CYL"),
range = c(3, 8)))
关于NA值:R中的可视化包通常要么完全排除NA观测(行),要么给出一个错误。如果它们出现错误,您可以手动删除它们(或者替换它们,这可能不是一个好主意)。
用于删除任何列中带有NA的行:
df = df[!apply(df, 1, anyNA), ]
下面是一个扩展的示例:
df = mtcars
df[4, 1] = NA
df[10, 4] = NA
# WITH NA
dim(df) # rows, columns in data set
anyNA(df) # any NAs in data set?
sum(is.na(df)) # number of NAs in data set
# REMOVING NA
df = df[!apply(df, 1, anyNA), ]
dim(df) # rows, columns in data set
anyNA(df) # any NAs in data set?
sum(is.na(df)) # number of NAs in data set
https://stackoverflow.com/questions/53949598
复制相似问题