我试图用vcftools创建的文件绘制indels长度,其中包含以下功能:" - hist-indel-len"。使用该文件,我想制作带有插入和删除的图,如果长度为负,则为删除,如果长度为正,则为插入。 Count列将位于y轴,从0到最大值,x轴将是最小长度(在这种情况下为-15)到最大长度(在这种情况下为15)。
数据如下:
LENGTH COUNT
1 -15 117
2 -14 178
3 -13 198
4 -12 414
5 -11 314
6 -10 451
7 -9 547
8 -8 1114
9 -7 1214
10 -6 2371
11 -5 3822
12 -4 9229
13 -3 17333
14 -2 20373
15 -1 19774
16 0 202129
17 1 22259
18 2 10101
19 3 4940
20 4 2458
21 5 1343
22 6 987
23 7 535
24 8 427
25 9 317
26 10 307
27 11 161
28 12 270
29 13 116
30 14 121
31 15 95
我的尝试是使用:
z <- read.csv("/home/userx/out.indel.hist", sep = "\t")
zz <- table(z)
barplot(zz, main="Insertion and Deletions",
xlab="Length", ylab="Count", col=c("darkblue","red"),
legend = rownames(zz), beside=TRUE)
结果:
任何帮助都将不胜感激。
答案 0 :(得分:2)
使用ggplot和提供的数据的相对简单的解决方案是创建一个分组变量来着色并使用geom_col
绘图:
library(tidyverse)
创建分组变量:
dat2 %>%
mutate(fill = ifelse(LENGTH <0, "minus", "plus")) -> dat2
ggplot(dat2)+
geom_col(aes(x = LENGTH, y = COUNT, fill = fill))
数据:
structure(list(LENGTH = -15:15, COUNT = c(117L, 178L, 198L, 414L,
314L, 451L, 547L, 1114L, 1214L, 2371L, 3822L, 9229L, 17333L,
20373L, 19774L, 202129L, 22259L, 10101L, 4940L, 2458L, 1343L,
987L, 535L, 427L, 317L, 307L, 161L, 270L, 116L, 121L, 95L)), .Names = c("LENGTH",
"COUNT"), class = "data.frame", row.names = c(NA, -31L))