使用R

时间:2018-07-06 05:54:36

标签: r boxplot

我正在尝试从以下类型的制表符分隔文件“ New.txt”中使用R脚本创建箱线图。 其中行数和列数将是可变的 < / p>

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

跳过前四列后,使用以下命令从病房第5列在R中创建箱形图

file <- "new.txt"
x=read.table(file,skip=1)
boxplot(x$V5,x$V6,x$V7,x$V9,x$V10,x$V11,col=rainbow(54),xlab="abc",ylab="Coverage",main="Coverage Metrics")

我正在遵循箱形图

[![R ploy] [1]] [1]

我想修改此命令,以便可以合并制表符分隔文件中将出现的任意数量的列,并按其框头标记每个箱形图

1 个答案:

答案 0 :(得分:3)

我建议从宽变到长。

这是使用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()

enter image description here

说明:从宽到长的重塑将列名存储在新列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()

enter image description here