Я рекомендую изменить форму с широкого на длинный.
Вот минимальный пример использования ggplot2
# Sample data
df <- data.frame(id = paste0("id", 1:100), matrix(rnorm(1000), ncol = 10))
library(dplyr)
library(tidyr)
library(ggplot2)
df %>%
gather(key, value, -id) %>%
mutate(key = factor(key, levels = paste0("X", 1:10))) %>%
ggplot(aes(x = key, y = value)) +
geom_boxplot()
Объяснение: Изменение формы с широкого на длинный сохраняет имена столбцов в новом столбце key
и его значения в value
; тогда мы можем просто отобразить key
на x
. Это работает для произвольного числа столбцов.
Обновление
Использование данных вашего образца
df <- read.table(text =
"Chr Start End Name 18NGS31 18MPD168 18NGS21 18NGS29 18NGS33 18NGS38
chr9 1234 1234 ABL1 1431 1 1112 1082 1809 1647
chr9 2345 2345 ASXL1 3885 37 3578 1974 2921 3559
chr9 3456 3456 ETV6 3235 188 2911 1578 2344 2673
chr9 4567 4567 MYD88 3198 187 2860 1547 2289 2621", header = T)
df %>%
gather(key, value, -Chr, -Start, -End, -Name) %>%
ggplot(aes(x = key, y = value, fill = key)) +
geom_boxplot()