繁体   English   中英

facet在qplot中工作,但是facet_wrap在ggplot中产生错误

[英]facets work in qplot but facet_wrap produces an error in ggplot

尝试在ggplot中使用facet_wrap以及我的真实数据集和简化的虚拟数据集时,我遇到了一个困惑的问题。 我试图绘制多个个体在基因组中的杂合性,每个染色体分别显示。

我的虚拟数据:

chr1    123000    124000    2    0.00002    26    0.00026    indiv1
chr1    124000    125000    3    0.00003    12    0.00012    indiv1
chr1    125000    126000    1    0.00001    6    0.00006    indiv1
chr1    126000    126000    2    0.00002    14    0.00014    indiv1
chr2    123000    124000    6    0.00006    20    0.00020    indiv1
chr2    124000    125000    0    0.00000    12    0.00012    indiv1
chr1    123000    124000    2    0.00002    26    0.00026    indiv2
chr1    124000    125000    3    0.00003    12    0.00012    indiv2
chr1    125000    126000    1    0.00001    6    0.00006    indiv2
chr1    126000    126000    2    0.00002    14    0.00014    indiv2
chr2    123000    124000    6    0.00006    20    0.00020    indiv2
chr2    124000    125000    0    0.00000    12    0.00012    indiv2

我的代码读取数据:

    hetshoms <- read.table("fakedata.txt", header=F)
    chrom <- hetshoms$V1
    start.pos <- hetshoms$V2
    end.pos <- hetshoms$V3
    hets <- hetshoms$V4
    het_stat <- hetshoms$V5
    homs <- hetshoms$V6
    hom_stat <- hetshoms$V7
    indiv <- hetshoms$V8
    HetRatio <- hets/(hets+homs)

当我尝试在qplot中分别绘制染色体时,它可以正常工作:

testplot <- qplot(start.pos, HetRatio, facets = chrom ~ ., colour=chrom)

但是当我在ggplot中尝试类似的东西时,它不起作用。 第一部分工作正常:

testplot <- ggplot(hetshoms, aes(x=start.pos, y=HetRatio)) + geom_point(aes(color=chrom))

但是当我尝试添加facet_wrap时:

testplot + facet_wrap(~chrom)

这会产生以下错误

“ Error en layout_base(data,vars,drop = drop):至少一层必须包含用于构面的所有变量”

我尝试将一个(as.formula(paste))添加到facet_wrap()并直接调用hetshoms $ V1,但都不能解决问题。

我将不胜感激任何有关如何更正我的代码的建议。

要复制qplot输出,我们需要facet_grid(chrom~.)

#data
hetshoms <- read.table(text="
                       chr1    123000    124000    2    0.00002    26    0.00026    indiv1
chr1    124000    125000    3    0.00003    12    0.00012    indiv1
                       chr1    125000    126000    1    0.00001    6    0.00006    indiv1
                       chr1    126000    126000    2    0.00002    14    0.00014    indiv1
                       chr2    123000    124000    6    0.00006    20    0.00020    indiv1
                       chr2    124000    125000    0    0.00000    12    0.00012    indiv1
                       chr1    123000    124000    2    0.00002    26    0.00026    indiv2
                       chr1    124000    125000    3    0.00003    12    0.00012    indiv2
                       chr1    125000    126000    1    0.00001    6    0.00006    indiv2
                       chr1    126000    126000    2    0.00002    14    0.00014    indiv2
                       chr2    123000    124000    6    0.00006    20    0.00020    indiv2
                       chr2    124000    125000    0    0.00000    12    0.00012    indiv2
                       ",header=FALSE)
#calculate HetRatio
colnames(hetshoms) <- c("chrom","start.pos","end.pos","hets","hets_stat","homs","homs_stat","indiv")
hetshoms$HetRatio <- hetshoms$hets/(hetshoms$hets+hetshoms$homs)

#plot
ggplot(hetshoms, aes(x=start.pos, y=HetRatio)) + 
  geom_point(aes(color=chrom)) +
  facet_grid(chrom~.)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM