0

我目前有数据可以按年龄告诉我 10-18 岁的人的血压。我想为每个年龄创建一个类似于小提琴图的密度图。

看起来像这样,但只有密度图。

关键是获取每个年龄的直方图,然后翻转它并绘制它,其中 x 轴是年龄,y 轴是血压。我觉得我以前看过这个,但我不记得在哪里。

谢谢你的帮助!

4

2 回答 2

1

我认为这应该可以解决问题:

# 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此处呈现,而您的年龄分类变量等价于Speciesa factor()

于 2016-05-04T09:42:11.867 回答
0

实现这一点的关键可能是几个特性的组合:

  1. 使用压力作为 x 轴,然后翻转坐标轴。
  2. 使用年龄使 facit 网格依赖于它。记住要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)

在此处输入图像描述

于 2016-05-04T09:47:37.617 回答