Consider the following data, displayed in ggplot2:
## Data in a data.frame
x <- rnorm(n=1E3, sd=2)
y <- x*1.2 + rnorm(n=1E3, sd=2)
df <- data.frame(x,y)
library(ggplot2)
ggplot(df, aes(x, y)) +
geom_point()
Now, consider the following depth contours using the depthContour function from the DepthProc package:
library(DepthProc)
depthContour(df, depth_params = list(
method = "Local",
beta = 0.1,
depth_params1 = list(method = "Projection")
))
Is it possible to extract the black depth contour lines only (i.e. without fill colors) so that to add them into the ggplot2 graph?
Any help would be welcome
Something like that (not exactly the same contour plot because of the rnorm-based initial data).
#See depthContour function from the DepthProc package at:
#https://github.com/zzawadz/DepthProc/blob/7d676879a34d49416fb00885526e27bcea119bbf/R/depthContour.R
## Data in a data.frame
x <- rnorm(n=1E3, sd=2)
y <- x*1.2 + rnorm(n=1E3, sd=2)
df <- data.frame(x,y)
n <- 50 #for the n*n matrix
xlim = extendrange(df[, 1], f = 0.1)
ylim = extendrange(df[, 2], f = 0.1)
x_axis <- seq(xlim[1], xlim[2], length.out = n)
y_axis <- seq(ylim[1], ylim[2], length.out = n)
xy_surface <- expand.grid(x_axis, y_axis)
xy_surface <- cbind(xy_surface[, 1], xy_surface[, 2])
ux_list <- list(u = xy_surface, X = df)
library(DepthProc)
depth_params = list(method = "Local", beta = 0.1, depth_params1 = list(method = "Projection"))
depth_params_list <- c(ux_list, depth_params)
depth_surface_raw <- do.call(depth, depth_params_list) #the higher the 'n', the longer the running process
depth_surface <- matrix(depth_surface_raw, ncol = n)
# depth_med <- depthMedian(df, depth_params) #for the depth median, if needed
library(reshape2)
depth_surface_melt <- melt(depth_surface)
depth_surface_melt <- cbind(xy_surface, depth_surface_melt[, 3])
depth_surface_melt <- data.frame(depth_surface_melt)
library(ggplot2)
ggplot(df, aes(x, y))+
scale_x_continuous(limits=c(-8,10),expand=c(0,0),breaks=c(-8,-5,0,5,10),labels=c("",-5,0,5,10))+
scale_y_continuous(limits=c(-12,12),expand=c(0,0),breaks=c(-12,-10,-5,0,5,10,12),labels=c("",-10,-5,0,5,10,""))+
geom_point(color="grey80")+
geom_contour(depth_surface_melt, mapping=aes(x=X1, y=X2, z=X3), bins=10, color="black", size=0.7)