Подтвердить что ты не робот

R: Практическое руководство. 3D-график плотности с gplot и geom_density

Я пытаюсь объединить несколько графиков плотности с наложением. ggplot и geom_density выполняют эту работу, но плотности укладываются друг на друга. This is overlaid but not 3d

ggplot(all.complete, aes(x=humid_temp)) +  
  geom_density(aes(group=height, colour=height, fill=height.f, alpha=0.1)) + 
  guides(fill = guide_legend(override.aes = list(colour = NULL))) +
  labs(main="Temperature by Height", x="Temperature", y="Density")

Нечто похожее на то, чего я пытаюсь достичь: Density? with 3d overlay

В моем случае годы будут заменены высотой.

Спасибо!!!

4b9b3361

Ответ 1

Я знаю это старое, но другие люди с такой проблемой могут наткнуться на этот пост, поэтому я подумал, что добавлю недавно обнаруженное решение. Существует новый пакет, который был создан для того, чтобы делать именно этот тип визуализации и называется ggjoy и предназначен для работы с системой ggplot2.

Вся информация находится здесь: https://github.com/clauswilke/ggjoy

Надеюсь, это поможет!

Ответ 2

Как упоминал @jlhoward, использование фасетов может работать или использовать подзаголовки, но любой из них не очень хорошо масштабируется с большим количеством групп. Вместо этого рассмотрите использование графика ecdf.

Без данных в вашем объекте all.complete я не могу воссоздать ваш сюжет, поэтому здесь приведен упрощенный пример:

library(ggplot2)

ggplot(iris, aes(x = Sepal.Length)) +  
  geom_density(aes(group = Species, 
                   colour = Species, 
                   fill = Species),
               alpha = 0.2)

плотность

Для более чем пары групп я нашел, что графики ecdf намного проще интерпретировать. Чтобы сделать аналогичный сюжет:

 ggplot(iris, aes(x = Sepal.Length)) +  
  stat_ecdf(aes(color = Species))

ecdf plot

У вас могут быть десятки участков ecdf на одном и том же участке, и поскольку они - только линии, они все еще достаточно раздельны для просмотра. Графики плотности или гистограммы будут слишком перекрыты, как в вашем примере.

Это сообщение в блоге, в результате которого я начал использовать графики ecdf и получил больше информации о них: http://allendowney.blogspot.com/2013/08/are-my-data-normal.html