【发布时间】:2014-02-27 06:13:57
【问题描述】:
我有一组数据是这样的
CHROM POS GT DIFF
1 chr01 14653 CT 254
2 chr01 14907 AG 254
3 chr01 14930 AG 23
4 chr01 15190 GA 260
5 chr01 15211 TG 21
6 chr01 16378 TC 1167
其中 POS 的范围从 1xxxx 到 1xxxxxxx。 而 CHROM 是一个分类变量,包含“chr01”到“chr22”和“chrX”的值。
我要绘制散点图:
- y(DIFF) 与 X(POS)
- 面板由 CHROM 分隔
- 按 GT 分组(按 GT 不同颜色)
我正在创建一个运行平均值的 ggplot(虽然不是时间序列数据)。
我想要的是通过 GT 获得每 1,000,000 个 POS 范围的平均值。
例如,
对于范围内的 x (1 ~ 1,000,000) ,DIFF 平均值 = _____
对于范围内的 x (1,000,001 ~ 2,000,000),DIFF 平均值 = _____
我想在 ggplot 上绘制水平线(由 GT 着色)。
#到目前为止,我在应用您的功能之前所拥有的:
应用你的功能后:
我尝试将您的解决方案应用于我已有的解决方案,这里有一些问题:
- 有不同的面板,因此不同面板的平均值不同,但是当我应用您的代码时,水平平均线都与第一个面板相同。
- 我有不同的 x 轴范围,所以当应用你的函数时,它会自动用之前的水平平均线填充额外的范围
这是我之前的代码:
ggplot(data1, aes(x=POS,y=DIFF,colour=GT)) +
geom_point() +
facet_grid(~ CHROM,scales="free_x",space="free_x") +
theme(strip.text.x = element_text(size=40),
strip.background = element_rect(color='lightblue',fill='lightblue'),
legend.position="top",
legend.title = element_text(size=40,colour="darkblue"),
legend.text = element_text(size=40),
legend.key.size = unit(2.5, "cm")) +
guides(fill = guide_legend(title.position="top",
title = "Legend:GT='REF'+'ALT'"),
shape = guide_legend(override.aes=list(size=10))) +
scale_y_log10(breaks=trans_breaks("log10", function(x) 10^x, n=10)) +
scale_x_continuous(breaks = pretty_breaks(n=3))
【问题讨论】: