-1

我有一张 SNP 表和有关相应基因的信息:基因 ID、基因类型和基因名称:

          SNP            Gene ID         Gene type      Gene Name
1    rs10876864 ENSG00000123411.10    protein_coding          IKZF4
2    rs10876864 ENSG00000123411.10    protein_coding          IKZF4
3    rs10876864 ENSG00000123411.10    protein_coding          IKZF4
4    rs10876864 ENSG00000123411.10    protein_coding          IKZF4
5   CNVR2845.57  ENSG00000196126.6    protein_coding       HLA-DRB1
6   CNVR2845.57  ENSG00000196126.6    protein_coding       HLA-DRB1
7   CNVR2845.57  ENSG00000196126.6    protein_coding       HLA-DRB1
8   CNVR2845.57  ENSG00000196126.6    protein_coding       HLA-DRB1
9     rs6030897  ENSG00000201372.1             snRNA             U6
10    rs6030897  ENSG00000201372.1             snRNA             U6
11    rs6030897  ENSG00000201372.1             snRNA             U6

我想绘制 SNP 总数的条形图,以查看有多少 SNP 是蛋白质编码或 snRNA 等。

到目前为止,这是我的代码:

barplot(as.matrix(data1), main="SNP", xlab="Gene type", ylab= "Total SNP",     names.arg=c("protein_coding","snRNA","pseudogene","antisense","lincRNA",""), border="blue", density=c(10, 20, 30, 40, 50))

但我收到一条错误消息:

Error in barplot.default(as.matrix(data1), main = "SNP", xlab = "Gene type",  :      incorrect number of names
In addition: Warning messages:
1: In apply(height, 2L, cumsum) : NAs introduced by coercion
2: In apply(height, 2L, cumsum) : NAs introduced by coercion
3: In apply(height, 2L, cumsum) : NAs introduced by coercion
4: In apply(height, 2L, cumsum) : NAs introduced by coercion
4

1 回答 1

0
  1. 你有四列,你提供5 names.arg
  2. 密度相同,但仅此一项不会出现错误......
  3. 的第一项barplot,称为height,根据?barplot应为:

    height
    描述构成绘图的条形的向量或值矩阵。如果 height 是向量,则绘图由一系列矩形条组成,其高度由向量中的值给出。如果 height 是一个矩阵,并且旁边是 FALSE,则绘图的每个条形对应于一列高度,列中的值给出组成条形的堆叠子条的高度。如果 height 是一个矩阵并且 beside 是 TRUE,那么每列中的值是并列的而不是堆叠的。

你有字符列,你期望什么:-)?你需要在绘制数据之前做一些汇总统计......比如

barplot(table(df$Gene_type, df$SNP))

但我建议看看许多其他更好的方法,显然ggplot2是可以自动执行此操作的包。

于 2013-06-20T10:05:44.740 回答