Графики линейной плотности
В настоящее время у меня есть данные, которые показывают мне артериальное давление по возрасту для тех 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()
,
Ключом к этому может быть сочетание нескольких функций:
- Используйте давление в качестве оси X, а затем переверните ось координат.
- Используйте возраст, чтобы привязать фазовую сетку к ней. Имейте в виду, чтобы сделать возраст
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)