Как отобразить несколько столбцов в r?

#r #ggplot2

#r #ggplot2

Вопрос:

У меня есть набор данных с 10 генами. Я хочу построить гены вдоль оси x, и в 1 из 2 оценок, которые у меня есть для генов, должно быть 2 графика.

Например, мои данные выглядят так:

 Gene1            label4      label3
RP11-983P164    0.2678077   0.2119513
SLC25A20        0.2644568   0.2586816
GLS             0.2560175   0.2631010
IKZF4           0.2468294   0.2189585
NRIP3           0.2446390   0.2170968
SENP1           0.2372014   0.2724868
SLC27A6         0.2321821   0.2218227
SRFBP1          0.2293986   0.2688244
OBFC1           0.2279012   0.2187441
STEAP2          0.2239941   0.2001475
  

Я хочу создать гистограмму, отображающую результаты как для label4 каждого гена, так и label3 для каждого гена, но я изо всех сил пытаюсь найти похожие примеры кода, которые работают с моими данными. Я пробовал подобные вещи:

 df %>%
  gather("label3", "label4",-Gene1) %>%
  ggplot(aes(Gene1, label3, fill = label3))  
  ggplot(aes(Gene1, label4, fill = label4))  
  geom_bar(position = "dodge", stat = "identity")  
  theme_bw()
  

но это вообще не работает, любая помощь будет оценена.

 Input data:
dput(dt)
structure(list(Gene1 = c("RP11-983P164", "SLC25A20", "GLS", "IKZF4", 
"NRIP3", "SENP1", "SLC27A6", "SRFBP1", "OBFC1", "STEAP2"), label4 = c(0.267807692, 
0.264456809, 0.256017476, 0.24682942, 0.244638979, 0.237201422, 
0.232182056, 0.229398578, 0.227901191, 0.223994106), label3 = c(0.211951256, 
0.258681595, 0.263101041, 0.218958497, 0.217096806, 0.272486806, 
0.221822709, 0.268824399, 0.218744099, 0.20014748)), row.names = c(NA, 
-10L), class = c("data.table", "data.frame")
  

Ответ №1:

Это то, что вы ищете?

 library(tidyverse)

df <- data.frame(structure(list(Gene1 = c("RP11-983P164", "SLC25A20", "GLS", "IKZF4",
                                      "NRIP3", "SENP1", "SLC27A6", "SRFBP1", "OBFC1", "STEAP2"), 
                            label4 = c(0.267807692, 0.264456809, 0.256017476, 0.24682942, 0.244638979, 0.237201422, 
                                       0.232182056, 0.229398578, 0.227901191, 0.223994106), 
                            label3 = c(0.211951256, 0.258681595, 0.263101041, 0.218958497, 0.217096806, 0.272486806, 
                                       0.221822709, 0.268824399, 0.218744099, 0.20014748)), 
                       row.names = c(NA, -10L), class = c("data.table", "data.frame")))

df %>%
  pivot_longer(cols=c(-Gene1)) %>%
  ggplot(., aes(Gene1, value, group=name, fill=name))  
  geom_col(position = 'dodge')
  

введите описание изображения здесь

Ответ №2:

Правильное использование pivot:

 pivot_longer(dt, cols = starts_with("label"),
             names_to = "Label", values_to = "Score") %>% 
  ggplot(aes(Gene1, Score, fill = Label))  
  geom_bar(position = "dodge", stat = "identity")  
  theme_bw()
  

введите описание изображения здесь