diff --git a/plot/denspt.r b/plot/denspt.r index 1ded94b..e999775 100644 --- a/plot/denspt.r +++ b/plot/denspt.r @@ -14,25 +14,32 @@ #' @param pal_alpha The transparency of the density layer denspt = function(data, mapping, n_tile=50, draw_pt=500, nodens=500, draw_label=60, always_label=c(), tsize=NULL, max_ov=25, h=15, ..., palette="Greys", pal_dir=1, pal_alpha=1) { - mis_map = setdiff(c("x", "y", "label"), names(mapping)) + mis_map = setdiff(c("x", "y"), names(mapping)) if (length(mis_map) > 0) stop("Missing mapping: ", paste(mis_map, collapse=", ")) lx = rlang::as_name(mapping$x) ly = rlang::as_name(mapping$y) - ll = rlang::as_name(mapping$label) keep = apply(data[c(lx, ly)], 1, function(x) !any(is.na(x) | is.infinite(x))) data = data[keep,] x = data[[lx]] y = data[[ly]] - h = c(diff(range(x, na.rm=TRUE))/h[1], diff(range(y, na.rm=TRUE))/rev(h)[1]) dens = MASS::kde2d(x, y, h, n=n_tile) data$dens = fields::interp.surface(dens, data.frame(x=x, y=y)) data$draw_pt = ifelse(rank(data$dens) nodens) @@ -44,10 +51,7 @@ denspt = function(data, mapping, n_tile=50, draw_pt=500, nodens=500, draw_label= geom_vline(xintercept=0, color="grey", linetype="dashed") + geom_point(aes(shape=draw_pt, ...)) + geom_smooth(color="blue", method="lm", se=FALSE) + - ggrepel::geom_label_repel(max.overlaps=max_ov, size=tsize, - min.segment.length=0, segment.alpha=0.3, fill="#ffffffa0", label.size=NA, - max.iter=1e6, max.time=10, label.padding = unit(0.12, "lines"), - box.padding = unit(0.01, "lines"), na.rm=TRUE) + + draw_label + scale_fill_distiller(palette=palette, trans="log10", breaks=c(1,10,50,200,1000,5000,20000), direction=pal_dir) + scale_shape_manual(values=c(pt=19)) +