我目前有数据可以按年龄告诉我 10-18 岁的人的血压。我想为每个年龄创建一个类似于小提琴图的密度图。
它看起来像这样,但只有密度图。
关键是获取每个年龄的直方图,然后翻转它并绘制它,其中 x 轴是年龄,y 轴是血压。我觉得我以前看过这个,但我不记得在哪里。
谢谢你的帮助!
我目前有数据可以按年龄告诉我 10-18 岁的人的血压。我想为每个年龄创建一个类似于小提琴图的密度图。
它看起来像这样,但只有密度图。
关键是获取每个年龄的直方图,然后翻转它并绘制它,其中 x 轴是年龄,y 轴是血压。我觉得我以前看过这个,但我不记得在哪里。
谢谢你的帮助!
我认为这应该可以解决问题:
# 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
a factor()
。
实现这一点的关键可能是几个特性的组合:
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)