Графики линейной плотности

В настоящее время у меня есть данные, которые показывают мне артериальное давление по возрасту для тех 10-18. Я хотел бы создать график плотности для каждого возраста, подобный графику для скрипки.

Это бы выглядело примерно так, но только с графиками плотности.

Ключ заключается в том, чтобы получить гистограмму для каждого возраста, затем перевернуть ее и построить график, где ось X - это возраст, а ось Y - это кровяное давление. Я чувствую, что видел, как это было сделано раньше, но я не могу вспомнить, где.

Спасибо за любую помощь!

2 ответа

Я думаю, что это должно сработать:

# load libraris
  library(ggplot2)
  library(ggthemes)

# load data
  data(iris)


# Plot
  ggplot(data = iris) +
    geom_density( aes(x=Sepal.Length), fill="red", color="red") +
    facet_grid(.~Species) +
    theme_minimal() +
    coord_flip()

Вы также можете использовать geom_violin:

  ggplot(data = iris) +
    geom_violin( aes(x=Species, y=Sepal.Length), fill="red", color="red") +
    geom_jitter( aes(x=Species, y=Sepal.Length), fill="gray", color="gray") +
    theme_minimal() 

В любом случае, ваша переменная артериального давления эквивалентна Sepal.Length представлены здесь, в то время как ваша возрастная категориальная переменная эквивалентна Species как factor(),

Ключом к этому может быть сочетание нескольких функций:

  1. Используйте давление в качестве оси X, а затем переверните ось координат.
  2. Используйте возраст, чтобы привязать фазовую сетку к ней. Имейте в виду, чтобы сделать возраст factor заранее!

Вот минимальный пример с некоторыми случайно сгенерированными данными для людей в возрасте от 25 до 30 лет и артериального давления от 50 до 150 (не знаю, насколько это реалистично):

data <- data.frame(age=round(runif(1000, 25, 30)), pressure=round(runif(1000, 50, 150)))
data$age <- factor(data$age)

library(ggplot2)
ggplot(data, aes(x=pressure)) +
  geom_density() +
  coord_flip() +
  facet_grid(.~age)

Другие вопросы по тегам