#r #ggplot2
Вопрос:
Есть ли способ добавить метки контуров на 2D-график плотности ядра, созданный с использованием geom_density_2d в ggplot2?
library(ggplot2)
# load data
data("meuse")
# plot
ggplot(meuse, aes(x=x, y=y))
geom_density_2d()
Я попытался извлечь построенные данные из построенного объекта ggplot, чтобы передать их в geom_text_contour из metR, но данные, которые он возвращает, представляют собой набор точек, которые используются для построения контурных линий, а не сетки координат x/y, которые понадобились бы geom_text_contour.
# extract denisty 2d
data <- ggplot_build(p)$data[[1]]
p geom_path(data=data,
mapping=aes(color=nlevel, group=group),
color='red')
Я хочу сделать что-то подобное (этот пример взят из документации geom_text_contour).
Ответ №1:
Насколько я могу видеть, geom_text_contour
требуется geom_contour
статистика, которая, в свою очередь, требует объекта, подобного растру, а не набора точек, как у вас здесь. Однако существует библиотека «directlabels», с которой можно работать geom_density_2d
. Этот пример очень уродлив, но, надеюсь, поможет вам начать! Я изменил масштаб оси, чтобы сделать значения контуров более управляемыми.
library(directlabels)
g1 <- ggplot(meuse %>% mutate(x=x/1000, y=y/1000), aes(x=x, y=y))
geom_density_2d(aes(colour = ..level..))
direct.label(g1, list(top.pieces, colour = 'black'))