首页 > 解决方案 > 按类别的多个直方图

问题描述

我是 R 新手,我想创建一个直方图。

我的数据如下所示:

                id age                               sub.types inter
1 TCGA-A8-A07O  60        Infiltrating duct carcinoma, NOS     6
2 TCGA-A7-A0CJ  65        Infiltrating duct carcinoma, NOS     6
3 TCGA-A7-A0CH  88        Infiltrating duct carcinoma, NOS     8
4 TCGA-A7-A0CG  86 Infiltrating duct and lobular carcinoma     8
5 TCGA-A7-A0CE  66        Infiltrating duct carcinoma, NOS     6
6 TCGA-A7-A0CD  75        Infiltrating duct carcinoma, NOS     7

我想创建一个直方图,这样对于每个分组年龄(30-39、40-49 等),我都会得到一个按子类型划分和着色的条形图。

我设法使用 ggplot 为每个组单独创建这样一个图,但不是一起(通过使用过滤器)

任何人都可以将我引向正确的答案吗?

标签: rggplot2histogram

解决方案


您可以使用cut按范围分组。在此处阅读更多相关信息。下面是一个如何使用ggplot2和绘制数据的示例dplyr。我按 10 年分组。

library(ggplot2)
library(dplyr)

df <- tibble::tribble(
                   ~id, ~age,                                ~sub.types, ~inter,
        "TCGA-A8-A07O",  60L,        "Infiltrating duct carcinoma, NOS",     6L,
        "TCGA-A7-A0CJ",  65L,        "Infiltrating duct carcinoma, NOS",     6L,
        "TCGA-A7-A0CH",  88L,        "Infiltrating duct carcinoma, NOS",     8L,
        "TCGA-A7-A0CG",  86L, "Infiltrating duct and lobular carcinoma",     8L,
        "TCGA-A7-A0CE",  66L,        "Infiltrating duct carcinoma, NOS",     6L,
        "TCGA-A7-A0CD",  75L,        "Infiltrating duct carcinoma, NOS",     7L
        )

df %>% 
  group_by(age.group = cut(age, breaks= seq(0, 100, by = 10))) %>% 
  ggplot() +
  geom_bar(aes(age.group, fill = sub.types)) +
  theme_classic()

在此处输入图像描述


推荐阅读