【问题标题】:Plot Levels in a heatmap with ggplot2使用 ggplot2 在热图中绘制级别
【发布时间】:2017-03-02 10:12:14
【问题描述】:

我有一个数据框,第一列中有几个样本,第二列中有一个因子,有 22 个级别。 head(df) 的示例输出:

  Sample    Chromosome
1  Sample2         chr10
2  Sample2         chr9
3  Sample3         chr10
4  Sample3         chr20
5  Sample3         chr10
6  Sample1         chr1

由于正常图的数据很多,因此我打算制作每个样本 chr10 分布的热图。例如 Sample2 在 chr10 上出现 2000 次。

我希望 ggplot 可能会接受 chr 因子及其水平作为尺度,但它没有。

这是我尝试过的:

ggplot(GenomereportTrim,aes(Sample,Chromosome))+
  geom_tile(aes(fill=Chromosome),color = "white")+
  scale_fill_gradient(low = "white",high = "steelblue")

大约有 50 个独特的样本,它们在染色体因子的 22 个级别上有一定的分布。

任何帮助将不胜感激。 谢谢!

【问题讨论】:

  • ggplot(GenomereportTrim,aes(Sample,Chromosome)) + stat_density_2d(geom = "raster", aes(fill = ..density..), contour = FALSE)?
  • 不幸返回错误:Computation failed in stat_density2d(): bandwidths must be strictly positive
  • 我不太清楚你想要什么:你想要一个热图,其中一个轴上有样本,另一个轴上有染色体,颜色对应于每个样本中染色体的频率吗?
  • 抱歉描述不清楚:我想要一个热图样本 x 染色体,其中颜色(渐变)对应于在给定染色体上发现样本的频率计数。假设样本 1 在 chr1 上被找到 300 次,在 chr3 上被找到 500 次,样本 4 在 chr20 上被找到 500 次,在 chr1 上被找到 50 次,在 chr19 上被找到 600 次。我希望这能让它更清楚。感谢您的帮助!

标签: r plot ggplot2


【解决方案1】:

如果我理解正确,您需要一个 Sample×Chromosome 图,其填充颜色对应于每条染色体的样本数。这可以通过使用 2D 分箱统计轻松实现:

ggplot(data) +
    aes(Sample, Chromosome) +
    geom_bin2d()

【讨论】:

  • 感谢您的帮助,它运行良好。有没有办法调整渐变比例?
  • @chrys 当然。在什么意义上调整?您可以查看文档中的 scale_fill_{continuous,manual,brewer} 函数。您可以进行大量自定义,包括配色方案、限制、中断等。
  • 从那以后我想给规模更大的范围。例如,500 的计数与 2000 的计数没有明显区别,因为它处于相同的色谱中。在情节中,我会说添加更多刻度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
相关资源
最近更新 更多