Saya memiliki bingkai data yang besar dengan 3 variabel: simbol, vaf, gen.function. (Tautan ke DF: https://www.dropbox.com/id /y6ykbzuy8x19psp/df_so.txt?dl=0 ).

 dim(df)
[1] 2021    3

Saya mencoba membuat angka dengan beberapa boxplots dan mengaturnya sesuai dengan variabel "gene.function" dan x-sumbu menjadi "simbol". Saya tidak peduli dengan urutannya-sendiri pada sumbu x tetapi saya ingin semua gen (simbol) memiliki kategori yang sama menjadi satu demi satu sama seperti dalam contoh ini:

enter image description here

Yang paling dekat saya telah mencapai tujuan saya adalah dengan menggunakan perpustakaan forast tetapi, untuk beberapa alasan, tidak semua gen dengan "gene.function" yang sama dipesan bersama. Ini adalah kode yang saya gunakan:

B <- df %>%
  mutate(symbol = fct_reorder(symbol, Gene.function)) %>%
  ggplot(aes(x = factor(symbol), y = vaf, fill = factor(Gene.function), color = factor(Gene.function))) +
  geom_boxplot() +
  scale_y_continuous(labels = function(x) paste0(x * 100, '%')) +
  xlab('') + 
  ylab('') + 
  ggtitle ('VAF distribution')+
  guides(fill = 'none')+
  theme_classic() + 
  theme(legend.position = "right",
        axis.text.x = element_text(angle = 90, size = 10, hj = 0.5, vj = 0.5, color = "black"),
        axis.text.y = element_text(size = 8, color = "black"),
        axis.title = element_text(size = 12), 
        plot.title = element_text(size = 14, face = 'italic'))

Saya percaya masalahnya adalah bahwa tidak ada variabel yang saya gunakan numerik, sebagai gantinya, keduanya merupakan faktor (simbol dan gen.functions). Memang, saya mendapatkan peringatan berikut ketika menjalankan kode di atas:

There were 24 warnings (use warnings() to see them)
Warning messages:
1: Problem with `mutate()` input `symbol`.
i argument is not numeric or logical: returning NA
i Input `symbol` is `fct_reorder(symbol, Gene.function)`.
2: Problem with `mutate()` input `symbol`.
i argument is not numeric or logical: returning NA
i Input `symbol` is `fct_reorder(symbol, Gene.function)`.
3: Problem with `mutate()` input `symbol`.
i argument is not numeric or logical: returning NA
i Input `symbol` is `fct_reorder(symbol, Gene.function)`.
4: Problem with `mutate()` input `symbol`.
i argument is not numeric or logical: returning NA
i Input `symbol` is `fct_reorder(symbol, Gene.function)`.
(...)

Adakah yang bisa memberi saya petunjuk? Terima kasih banyak!

0
Mireia Boluda 5 April 2021, 13:59

1 menjawab

Jawaban Terbaik

Anda harus memesan pertama df sesuai dengan Gene.function dan symbol, maka Anda dapat mengambil informasi tentang urutan symbol untuk membuat urutan tingkat faktor yang benar :

library(ggplot2)
library(dplyr)

level_info <- df %>%
  arrange(Gene.function, symbol) %>% 
  pull(symbol) %>% 
  unique()

df %>%
  mutate(Gene.function = as.factor(Gene.function),
         symbol = factor(symbol, levels = level_info)) %>%
  ggplot(aes(x = symbol, y = vaf, fill = Gene.function, color = Gene.function)) +
  geom_boxplot() +
  scale_y_continuous(labels = function(x) paste0(x * 100, '%')) +
  xlab('') + 
  ylab('') + 
  ggtitle ('VAF distribution')+
  guides(fill = 'none')+
  theme_classic() + 
  theme(legend.position = "right",
        axis.text.x = element_text(angle = 90, size = 10, hj = 0.5, vj = 0.5, color = "black"),
        axis.text.y = element_text(size = 8, color = "black"),
        axis.title = element_text(size = 12), 
        plot.title = element_text(size = 14, face = 'italic'))

enter image description here

0
starja 5 April 2021, 11:49