Создание сгруппированного столбчатого графика с помощью Ggplot

#r #ggplot2

#r #ggplot2

Вопрос:

Как мне закодировать сгруппированную столбчатую диаграмму, где я могу отобразить 2 значения для каждого штамма: один столбец будет представлять объем клеток для диеты с железом, а другой столбец будет представлять объем клеток для обычной диеты?

Моя таблица Excel выглядит примерно так, где в ней несколько столбцов, но я хочу выборочно составить график на основе 3 столбцов (деформация, CV Iron, CV Normal):

 Strain      CV Iron        CV Normal
A             23              17
B             10              15
...
 

Я хочу, чтобы моя сгруппированная гистограмма выглядела примерно так:

из https://www.r-graph-gallery.com/wp-content/uploads/2015/10/48_basic_barplot_ggplot2.png

Ось x — это «Штамм», а ось y будет «CV», где каждый штамм имеет 2 столбца: один для «CV железа» и один для «CV Нормальный», а цветовое кодирование столбцов будет основано на диете (CV железа или CV нормальный).

Ответ №1:

Я буду использовать пример:

 df1 <- data.frame(Strain = c("A","B","C","D"),
              CVIron = c(12,15,16,21),
              CVNormal = c(10,12,18,9))

head(df1) 
  Strain CVIron CVNormal
    1      A     12       10
    2      B     15       12
    3      C     16       18
    4      D     21        9
 

Прежде всего, вы должны объединить два столбца CV в один. Вы можете использовать функцию melt в пакете reshape2.

 library(reshape2)
df2 <- melt(df1, id = "Strain")

head(df2)
 Strain variable value
1      A   CVIron    12
2      B   CVIron    15
3      C   CVIron    16
4      D   CVIron    21
5      A CVNormal    10
6      B CVNormal    12
7      C CVNormal    18
8      D CVNormal     9
 

А затем вы можете легко применить функцию ggplot.

 library(ggplot2)
ggplot(data=df2, aes(x=variable, y=value, fill=Strain))  
   geom_bar(stat="identity", position=position_dodge())
 

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