r - 创建类或组散点图

标签 r ggplot2 data-visualization correlation

我使用 ggstatsplot 的 ggscatterstats 函数来计算各种临床参数之间的相关性,然后绘制它们。例如age scatter

这里我的变量是年龄和白细胞。这是获取所有数据点,无论它们属于哪个类别。我想对数据中存在的每个 FAB 分类执行相同的操作。

dat <- merge_clinical_class_TMB %>% select(FAB,AGE,Wbc,Platelet,HB,PB_Blasts,BM_Blasts,TMB_NONSYNONYMOUS)
df2 <- dat
library(ggstatsplot)
ggscatterstats(
  df2,
  x = AGE,
  y = Wbc,
  type = "np" # try the "robust" correlation too! It might be even better here
  #, marginal.type = "boxplot"
)

我的数据框看起来像这样

head(df2)
  FAB AGE Wbc Platelet HB PB_Blasts BM_Blasts TMB_NONSYNONYMOUS
1  M4  50  17      231 10        88        52         0.3000000
2  M3  61   1       90 10        44         0         0.4333333
3  M3  30   6      114 11        82         6         0.2333333
4  M0  77  92      105  9        67        56         0.4000000
5  M1  46  29       90  9        90        81         0.5666667
6  M1  68   3       63  8        91        55         0.9000000

我的数据

dput(df2)
structure(list(FAB = structure(c(5L, 4L, 4L, 1L, 2L, 2L, 3L, 
3L, 3L, 5L, 3L, 5L, 1L, 5L, 5L, 3L, 3L, 3L, 1L, 2L, 1L, 4L, 6L, 
6L, 5L, 3L, 5L, 7L, 5L, 1L, 6L, 5L, 5L, 6L, 5L, 6L, 3L, 3L, 4L, 
4L, 5L, 7L, 3L, 3L, 5L, 2L, 5L, 1L, 3L, 6L, 2L, 5L, 2L, 5L, 7L, 
3L, 3L, 8L, 6L, 4L, 2L, 2L, 2L, 2L, 3L, 8L, 3L, 2L, 2L, 4L, 6L, 
3L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 6L, 2L, 1L, 3L, 2L, 5L, 5L, 
1L, 2L, 5L, 6L, 6L, 2L, 6L, 4L, 2L, 5L, 2L, 2L, 2L, 1L, 4L, 4L, 
1L, 3L, 9L, 6L, 5L, 5L, 1L, 3L, 3L, 5L, 1L, 2L, 2L, 3L, 5L, 1L, 
5L, 5L, 6L, 2L, 2L, 2L, 1L, 3L, 3L, 6L, 5L, 2L, 5L, 1L, 2L, 8L, 
2L, 3L, 9L, 5L, 2L, 1L, 5L, 3L, 5L, 5L, 1L, 3L, 2L, 5L, 3L, 6L, 
5L, 1L, 2L, 2L, 5L, 3L, 5L, 5L, 6L, 5L, 5L, 3L, 5L, 6L, 3L, 2L, 
3L, 3L, 2L, 4L, 6L, 4L, 1L, 2L, 6L, 3L, 6L, 2L, 3L, 2L, 4L, 2L, 
2L, 4L, 3L, 3L, 4L, 4L, 4L, 3L, 4L, 3L, 6L, 2L, 4L, 2L, 5L, 2L, 
4L), .Label = c("M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", 
"nc"), class = "factor"), AGE = c(50L, 61L, 30L, 77L, 46L, 68L, 
23L, 64L, 76L, 81L, 25L, 78L, 39L, 49L, 57L, 63L, 62L, 52L, 76L, 
64L, 65L, 61L, 44L, 31L, 64L, 33L, 55L, 50L, 64L, 59L, 59L, 77L, 
33L, 48L, 35L, 66L, 67L, 51L, 74L, 51L, 64L, 77L, 63L, 37L, 57L, 
53L, 62L, 39L, 72L, 66L, 51L, 51L, 18L, 63L, 54L, 75L, 40L, 60L, 
76L, 33L, 63L, 53L, 75L, 67L, 66L, 77L, 64L, 76L, 51L, 42L, 51L, 
59L, 43L, 45L, 60L, 47L, 68L, 24L, 48L, 73L, 60L, 44L, 71L, 25L, 
60L, 57L, 55L, 69L, 42L, 42L, 45L, 50L, 41L, 21L, 50L, 69L, 76L, 
70L, 27L, 76L, 65L, 48L, 59L, 69L, 81L, 22L, 61L, 51L, 63L, 61L, 
22L, 73L, 49L, 41L, 47L, 54L, 44L, 55L, 83L, 78L, 59L, 57L, 57L, 
88L, 43L, 71L, 62L, 75L, 62L, 58L, 65L, 66L, 60L, 35L, 76L, 72L, 
35L, 73L, 67L, 70L, 48L, 65L, 41L, 52L, 67L, 58L, 34L, 60L, 55L, 
56L, 61L, 31L, 71L, 56L, 57L, 60L, 57L, 58L, 79L, 55L, 34L, 76L, 
82L, 67L, 67L, 54L, 53L, 71L, 61L, 30L, 50L, 35L, 29L, 45L, 38L, 
81L, 31L, 75L, 67L, 29L, 51L, 40L, 32L, 57L, 25L, 63L, 75L, 25L, 
68L, 62L, 25L, 31L, 68L, 45L, 61L, 35L, 22L, 23L, 21L, 53L), 
    Wbc = c(17L, 1L, 6L, 92L, 29L, 3L, 32L, 117L, 62L, 91L, 34L, 
    10L, 2L, 57L, 88L, 77L, 75L, 4L, 15L, 1L, 3L, 86L, 9L, 137L, 
    132L, 3L, 22L, 6L, 3L, 1L, 12L, 40L, 26L, 116L, 53L, 112L, 
    2L, 42L, 32L, 4L, 2L, 3L, 17L, 19L, 14L, 3L, 119L, 5L, 3L, 
    79L, 104L, 3L, 35L, 77L, 2L, 8L, 8L, 1L, 4L, 1L, 46L, 2L, 
    6L, 31L, 3L, 2L, 3L, 34L, 2L, 2L, 15L, 12L, 4L, 29L, 12L, 
    12L, 60L, 224L, 33L, 2L, 7L, 14L, 5L, 11L, 47L, 5L, 31L, 
    6L, 11L, 38L, 5L, 7L, 134L, 93L, 3L, 10L, 3L, 48L, 90L, 297L, 
    1L, 1L, 1L, 2L, 2L, 115L, 35L, 50L, 18L, 62L, 52L, 15L, 12L, 
    48L, 81L, 13L, 35L, 28L, 78L, 17L, 30L, 99L, 20L, 3L, 172L, 
    6L, 28L, 98L, 59L, 101L, 68L, 2L, 2L, 43L, 4L, 38L, 34L, 
    59L, 37L, 1L, 111L, 49L, 43L, 298L, 26L, 47L, 14L, 16L, 114L, 
    203L, 8L, 133L, 1L, 31L, 3L, 68L, 3L, 20L, 19L, 73L, 20L, 
    5L, 1L, 15L, 45L, 68L, 88L, 36L, 10L, 23L, 1L, 72L, 1L, 2L, 
    40L, 12L, 13L, 7L, 46L, 2L, 64L, NA, 5L, 103L, 8L, 1L, 3L, 
    16L, 29L, 1L, 99L, 2L, 6L, 2L, 3L, 2L, 115L, 27L, 8L, 1L), 
    Platelet = c(231L, 90L, 114L, 105L, 90L, 63L, 38L, 100L, 
    32L, 32L, 23L, 98L, 215L, 14L, 56L, 19L, 110L, 22L, 85L, 
    42L, 16L, 22L, 50L, 42L, 15L, 61L, 65L, 50L, 134L, 102L, 
    57L, 29L, 111L, 50L, 44L, 34L, 28L, 232L, 42L, 58L, 27L, 
    86L, 23L, 38L, 76L, 108L, 52L, 175L, 52L, 132L, 23L, 143L, 
    30L, 41L, 9L, 21L, 95L, 59L, 79L, 38L, 11L, 68L, 22L, 141L, 
    168L, 70L, 41L, 21L, 25L, 35L, 14L, 20L, 67L, 116L, 45L, 
    57L, 8L, 34L, 32L, 60L, 93L, 145L, 48L, 33L, 50L, 129L, 9L, 
    61L, 176L, 12L, 53L, 136L, 40L, 73L, 27L, 12L, 166L, 30L, 
    87L, 40L, 94L, 52L, 23L, 127L, 39L, 57L, 35L, 21L, 148L, 
    25L, 149L, 64L, 351L, 71L, 53L, 22L, 35L, 31L, 46L, 85L, 
    18L, 80L, 62L, 156L, 32L, 50L, 69L, 31L, 20L, 57L, 142L, 
    37L, 79L, 66L, 21L, 31L, 88L, 11L, 15L, 82L, 53L, 76L, 51L, 
    68L, 64L, 55L, 40L, 90L, 37L, 45L, 36L, 52L, 86L, 88L, 35L, 
    174L, 28L, 121L, 131L, 17L, 152L, 52L, 30L, 79L, 79L, 87L, 
    30L, 44L, 140L, 59L, 58L, 19L, 29L, 156L, 19L, 61L, 36L, 
    11L, 71L, 13L, 45L, 34L, 39L, 82L, 18L, 43L, 118L, 32L, 73L, 
    15L, 60L, 208L, 96L, 257L, 61L, 12L, 32L, 23L, 52L, 46L), 
    HB = c(10L, 10L, 11L, 9L, 9L, 8L, 7L, 10L, 10L, 11L, 11L, 
    10L, 10L, 8L, 10L, 13L, 11L, 9L, 9L, 8L, 9L, 12L, 8L, 6L, 
    10L, 7L, 8L, 9L, 11L, 12L, 11L, 10L, 10L, 9L, 8L, 10L, 9L, 
    13L, 9L, 8L, 12L, 9L, 12L, 9L, 9L, 9L, 11L, 10L, 11L, 12L, 
    12L, 11L, 9L, 10L, 9L, 9L, 10L, 9L, 10L, 9L, 8L, 9L, 9L, 
    10L, 12L, 10L, 10L, 8L, 10L, 9L, 11L, 11L, 11L, 8L, 9L, 9L, 
    9L, 6L, 10L, 10L, 9L, 9L, 8L, 9L, 9L, 7L, 9L, 11L, 12L, 10L, 
    9L, 10L, 12L, NA, 10L, 7L, 11L, 10L, 9L, 11L, 10L, 9L, 8L, 
    8L, 10L, 9L, 12L, 11L, 8L, 13L, 11L, 9L, 9L, 12L, 10L, 9L, 
    10L, 8L, 9L, 9L, 9L, 10L, 9L, 10L, 10L, 9L, 10L, 8L, 7L, 
    9L, 9L, 8L, 9L, 9L, 8L, 10L, 8L, 9L, 9L, 8L, 9L, 9L, 9L, 
    9L, 9L, 10L, 9L, 8L, 9L, 10L, 7L, 11L, 11L, 10L, 6L, 8L, 
    9L, 9L, 10L, 8L, 11L, 10L, 11L, 8L, 9L, 8L, 9L, 8L, 10L, 
    10L, 10L, 9L, 9L, 12L, 9L, 9L, 11L, 9L, 13L, 9L, 10L, 8L, 
    9L, 10L, 10L, 11L, 9L, 9L, 10L, 9L, 9L, 11L, 7L, 13L, 14L, 
    12L, 8L, 12L, 8L, 9L), PB_Blasts = c(88L, 44L, 82L, 67L, 
    90L, 91L, 59L, 60L, 48L, 98L, 53L, 40L, 75L, 81L, 90L, 57L, 
    46L, 67L, 74L, 61L, 99L, 73L, 74L, 83L, 72L, 33L, 35L, 70L, 
    85L, 61L, 95L, 80L, 71L, 83L, 90L, 90L, 50L, 64L, 51L, 93L, 
    95L, 75L, 80L, 52L, 61L, 72L, 65L, 83L, 45L, 32L, 85L, 73L, 
    86L, 82L, 30L, 48L, 47L, 58L, 78L, 100L, 81L, 82L, 40L, 89L, 
    70L, 47L, 80L, 73L, 62L, 88L, 57L, 70L, 40L, 56L, 86L, 37L, 
    90L, 77L, 75L, 37L, 94L, 86L, 97L, 72L, 87L, 40L, 52L, 60L, 
    68L, 40L, 95L, 81L, 92L, 90L, 90L, 42L, 37L, 84L, 77L, 99L, 
    83L, 65L, 79L, 82L, 46L, 94L, 71L, 39L, 62L, 95L, 55L, 11L, 
    51L, 42L, 77L, 72L, 39L, 69L, 75L, 70L, 75L, 52L, 91L, 33L, 
    87L, 55L, 72L, 76L, 85L, 79L, 79L, 81L, 50L, 81L, 33L, 88L, 
    34L, 90L, 69L, 32L, 92L, 90L, 47L, 75L, 30L, 59L, 57L, 62L, 
    54L, 60L, 89L, 82L, 90L, 90L, 64L, 89L, 43L, 58L, 58L, 97L, 
    71L, 91L, 53L, 75L, 85L, 67L, 86L, 70L, 43L, 86L, 74L, 87L, 
    0L, 0L, 86L, 53L, 63L, 41L, 76L, 45L, 85L, 0L, 94L, 6L, 91L, 
    0L, 2L, 93L, 85L, 82L, 56L, 40L, 48L, 0L, 14L, 90L, 71L, 
    51L, 91L, 42L), BM_Blasts = c(52L, 0L, 6L, 56L, 81L, 55L, 
    0L, 0L, 88L, 37L, 87L, 6L, 4L, 48L, 84L, 70L, 53L, 18L, 82L, 
    5L, 34L, 68L, 5L, 6L, 90L, 0L, 67L, 0L, 22L, 12L, 0L, 2L, 
    14L, 3L, 18L, 7L, 17L, 79L, 0L, 40L, 0L, 8L, 71L, 33L, 17L, 
    41L, 65L, 53L, 0L, 11L, 85L, 2L, 90L, 39L, 0L, 54L, 23L, 
    0L, 0L, 0L, 97L, 42L, 48L, 61L, 6L, 0L, 46L, 55L, 10L, 2L, 
    0L, 48L, 39L, 37L, 43L, 0L, 91L, 76L, 41L, 16L, 30L, 17L, 
    54L, 50L, 65L, 0L, 59L, 22L, 51L, 16L, 6L, 10L, 90L, 72L, 
    0L, 32L, 0L, 49L, 88L, 98L, 0L, 0L, 15L, 0L, 0L, 94L, 55L, 
    39L, 9L, 86L, 70L, 11L, 5L, 74L, 79L, 90L, 83L, 57L, 74L, 
    28L, 17L, 4L, 91L, 0L, 91L, 50L, 49L, 80L, 22L, 64L, 84L, 
    12L, 14L, 86L, 6L, 18L, 40L, 0L, 61L, 6L, 87L, 0L, 62L, 51L, 
    6L, 72L, 59L, 29L, 24L, 96L, 0L, 53L, 13L, 45L, 61L, 56L, 
    35L, 10L, 0L, 8L, 58L, 16L, 25L, 10L, 3L, 71L, 52L, 67L, 
    32L, 88L, 10L, 8L, 0L, 0L, 97L, 7L, 45L, 0L, 49L, 9L, 85L, 
    0L, 70L, 91L, 7L, 0L, 2L, 0L, 32L, 11L, 71L, 0L, 48L, 0L, 
    14L, 7L, 90L, 63L, 83L, 29L), TMB_NONSYNONYMOUS = c(0.3, 
    0.433333333333, 0.233333333333, 0.4, 0.566666666667, 0.9, 
    0.3, 0.133333333333, 0.4, 0.3, 0.233333333333, 0.5, 0.266666666667, 
    0, 0.2, 0.4, 0.266666666667, 0.333333333333, 0.4, 0.4, 0.566666666667, 
    0.0333333333333, 0.166666666667, 0.1, 0.166666666667, 0.266666666667, 
    0.3, 0.3, 0.466666666667, 0.0666666666667, 0.266666666667, 
    0.266666666667, 0.0333333333333, 0.1, 0.133333333333, 0.0333333333333, 
    0.5, 0.6, 0.0333333333333, 0.1, 0.0333333333333, 0.333333333333, 
    0.433333333333, 0.2, 0.466666666667, 0.2, 0.0333333333333, 
    0.733333333333, 0.2, 0.233333333333, 0.233333333333, 0.3, 
    0.133333333333, 0, 0.3, 0.333333333333, 0.333333333333, 0.266666666667, 
    0.533333333333, 0.2, 0.533333333333, 0.466666666667, 0.533333333333, 
    0.0333333333333, 0.3, 0.5, 0.333333333333, 0.266666666667, 
    0.5, 0.333333333333, 0.0666666666667, 0.466666666667, 0.333333333333, 
    0.266666666667, 0.7, 0.433333333333, 0.166666666667, 0.0666666666667, 
    0.233333333333, 0.5, 0.0333333333333, 0.2, 0.433333333333, 
    0.433333333333, 0.4, 0.233333333333, 0.0666666666667, 0.233333333333, 
    0.466666666667, 0.0666666666667, 0, 0.1, 0.4, 0.1, 0.2, 0.4, 
    0.433333333333, 0.566666666667, 0.2, 0.0333333333333, 0.533333333333, 
    0.566666666667, 0.3, 0.466666666667, 0.566666666667, 0.0333333333333, 
    0.4, 0.0666666666667, 0.633333333333, 0.4, 0.466666666667, 
    0.466666666667, 0.3, 0.5, 0.0333333333333, 0.333333333333, 
    0.333333333333, 0.266666666667, 0.366666666667, 0.666666666667, 
    0.333333333333, 0.533333333333, 0.466666666667, 0.6, 0.333333333333, 
    0.4, 0.266666666667, 0.366666666667, 0.2, 0.0333333333333, 
    0.266666666667, 0.3, 0.166666666667, 0.4, 0.566666666667, 
    0.4, 0.1, 0.1, 0.0666666666667, 0.366666666667, 0, 0.4, 0.0333333333333, 
    0.1, 0.0666666666667, 0.5, 0.3, 0.466666666667, 0.0333333333333, 
    0.4, 0.1, 0.0666666666667, 0.766666666667, 0.5, 0.466666666667, 
    0.333333333333, 0.4, 0.333333333333, 0.4, 0.266666666667, 
    0.2, 0.3, 0.7, 0.166666666667, 0.2, 0, 0.5, 0.166666666667, 
    0.533333333333, 0.233333333333, 0.166666666667, 0.133333333333, 
    0.0666666666667, 0.4, 0.333333333333, 0.133333333333, 0.4, 
    0.233333333333, 0.466666666667, 0.366666666667, 0.266666666667, 
    0.266666666667, 0.266666666667, 0.4, 0.2, 0.166666666667, 
    0.4, 0.333333333333, 0.166666666667, 0.266666666667, 0.1, 
    0.333333333333, 0.733333333333, 0.466666666667, 0.466666666667, 
    0.2, 0.1, 1.13333333333, 0.2, 0.3)), class = "data.frame", row.names = c(NA, 
-200L))

目标我想对各种FAB做同样的事情,我有从M0M7的FAB标签我想忽略 nc

因此,对于每个 FAB 标签,我希望看到相关性,例如,如果我必须参加 M0 类(class),那么我希望看到它们的年龄与 Wbc 相关性,其他 FAB 类别也类似。是否可以在 ggstataplot 中执行这些操作,因为我没有看到任何此类功能的相关性。

简单的方法是我可以对它们进行子集化并执行相同的操作,例如 M0 、M1、M2 等,但这是一个漫长的过程,我可以拆分 FAB 列并将其传递给库吗?

我想知道执行上述操作并绘制相同内容的其他方法

如有任何帮助或建议,我们将不胜感激

最佳答案

更新:我们还可以使用内置函数,请参阅评论:
非常感谢@Indrajeet Patil:https://indrajeetpatil.github.io/ggstatsplot/articles/web_only/ggscatterstats.html#grouped-analysis-with-grouped_ggscatterstats 为了子集 FAB,我们使用过滤器:

## for reproducibility
set.seed(123)

## plot
grouped_ggscatterstats(
  ## arguments relevant for ggscatterstats
  data = df2 %>% filter(as.integer(FAB)<5),
  x = AGE,
  y = Wbc,
  grouping.var = FAB,
  type = "r",
  # ggtheme = ggthemes::theme_tufte(),
  ## arguments relevant for combine_plots
  annotation.args = list(
    title = "Relationship between Wbc and Age",
    caption = "Source: stackoverflow"
  ),
  plotgrid.args = list(nrow = 2, ncol = 2)
)

enter image description here

第一个答案: 我们可以这样做: 编写一个函数并传递数据框+FAB列值:

library(ggstatsplot)


my_function <- function(df, x){
 ggscatterstats(
    df %>% filter(FAB == x),
    x = AGE,
    y = Wbc,
    type = "np" # try the "robust" correlation too! It might be even better here
    #, marginal.type = "boxplot"
  )
}

M0 <- my_function(df2, "M0")
M1 <- my_function(df2, "M1")
M2 <- my_function(df2, "M2")
M3 <- my_function(df2, "M3")
.
.
.


library(patchwork)
(M0 / M1 | M2 / M3) 

enter image description here

关于r - 创建类或组散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73173810/

相关文章:

r - 如何处理R中的大量情节

python - 如何使用 Python 禁用可绘制的等值线图的放大?

r - 如何用R创建时间散点图?

python-3.x - 查询多个数据框并绘制组直方图

r - 从一个数据帧创建多个 .csv 文件

r - 使用 grid.arrange 更改 multiplot ggplot2 中的多行标题

r - 如何使用函数通过ggplot2转换轴值?

r - 使用 "expression"在ggplot2轴文本中制作特殊字符时的文本对齐

r - 按整个整数值分割浮点向量

r - 如何将多行的 R 数据框重新格式化为一行