我正在尝试在R中创建一个3D表面图 - 我已经阅读了许多其他问题,但无法找到解决方案:(
我在空间内有X和Y坐标(每个X,Y对指的是一个点),例如:
x y
10 15
11 11
8 11
15 14
15 8
13 11
50 29
29 30
90 40
55 39
我想把这些点绘制成一个表面图,这样在附近有更多点的地方,图的密度更高(例如,显然有许多点接近(10,10)并且只有一个指向(90,40)。
理想的解决方案如下:
我试图使用它 - https://cran.r-project.org/web/packages/HSAUR/vignettes/Ch_density_estimation.pdf(这是我在上面找到的图片)。但不幸的是我无法让这些例子工作 - 有数据的库不可用!
我的想法是将此可视化与表面图像进行比较,因此我需要x和y坐标(0,0)在一个位置开始(如图像所示,两个日志都从一个角落开始)。我还需要轴不相等,x轴从0到100,y轴从0到50,因此原始坐标不会失真,可视化显示数据与表面成比例。
我真的希望有人可以帮助我!
编辑: 到目前为止,我已经尝试按照上面文件中的说明进行操作,这意味着使用高斯函数来估计峰值。
test <- read.csv("test1.csv", header = TRUE)
gauss <- function(x) 1/sqrt(2*pi) * exp(-(x^2)/2)
n <- 100
h <- 10
xgrid <- seq(from = 0, to = 1280, by = 16)
bumps <- sapply(test$x, function(a) gauss((xgrid - a)/h)/(n * h))
persp(bumps, theta = 60, axes = TRUE, box = TRUE)
答案 0 :(得分:2)
请参阅常用kde2d
库中的MASS
。假设您的数据位于data
,则以下内容将生成估计密度函数的透视图。请参阅相关功能的帮助文件以了解如何进行调整。
library(MASS)
with(data,persp(kde2d(x,y)))