Я пытаюсь создать сюжет, который затеняет область под кривой графика плотности между двумя точками. Вот то, что я до сих пор:Затенение (граненый) плотности между двумя точками ggplot2
df.ind <- data.frame(x=rnorm(1000))
df.group <- data.frame(group = factor(1:20))
df.group$gr.mean <- rnorm(20)
df.group$width <- 1 + abs(rnorm(20))
df.group$upper <- df.group$gr.mean + df.group$width
df.group$lower <- df.group$gr.mean - df.group$width
Затем я могу создать ggplot
, где я использую плотность x
от df.ind
и построить ее 20 различных раз (от каждой группы). Затем я накладываю вертикальные линии. То, что я хочу сделать, - это оттенок области между линиями.
ggplot(df.group) +
stat_density(data=df.ind, mapping=aes(x),
geom="line", position="dodge") +
facet_wrap(~group) +
geom_vline(aes(xintercept=lower)) +
geom_vline(aes(xintercept=upper))
Я знаю подобный вопрос здесь: ggplot2 shade area under density curve by group и здесь: Shading a kernel density plot between two points.
Но мои данные поступают из двух различных data.frame
объектов. Поэтому я не могу использовать умный трюк, который они используют для агрегирования данных ...
Ну, объединить свои кадры данных и использовать ранее предложенные методы. – MrFlick
@MrFlick - нечего смириться. Они не имеют общих характеристик. – Alex
Ну, тогда вам нужно будет повторить отдельные данные для каждой группы. Или вы можете предварительно вычислить кривую плотности один раз и повторить эти данные для каждой группы. ggplot не собирается делать каких-либо специальных обнаружений перекрытия многоугольников. вам нужно рассчитать данные, которые вы хотите построить. – MrFlick