如何绘制插入和删除

时间:2018-04-18 09:57:21

标签: r plot ggplot2

我试图用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

有了这个数据框架,我试图得到一个情节: enter image description here

我的尝试是使用:

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)

结果:

enter image description here

任何帮助都将不胜感激。

1 个答案:

答案 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))

enter image description here

数据:

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))