Home > Software design >  Creating scatter plot class or group wise
Creating scatter plot class or group wise

Time:07-31

Im using ggstatsplot's ggscatterstats function to calculate correlation between various clinical parameters and then plotting them. For example age scatter

here my variables are age and WBC. This is taking all the data points irrespective of the class they belong. I would like to do the same with each FAB classification that is present in my data.

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"
)

My dataframe looks like this

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

My data

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))

Objective I would like to do the same with various FABI have FAB label from M0 to M7 I would like to ignore nc

So for each FAB label I would like to see the correlation for example if I have to take the M0 class then I would like to see their Age vs Wbc correlation and similarly for other FAB class as well. Is it possible to do these in ggstataplot as I don't see for correlation any such functionality there .

Simple way is I can subset them and do the same like M0 ,M1, M2 etc etc but that is a long process can I split the FAB column and pass it to the library?

I would like to know other ways to do the above and plot the same

Any help or suggestion would be appreciated

CodePudding user response:

Update: We could also use the built in function see comments:
Many thanks to @Indrajeet Patil: enter image description here

First answer: We could do something like this: write a function and pass the data frame the column FAB value:

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

  • Related