3

我正在使用一个两列表,我试图从中制作密度等高线图。“HiChIP_VillusvsCrypt”是 x 轴,“RNAseq_VillusvsCrypt”是 y 轴。 如果您在此附加图像中看到,则有一个密度从 0 缩放到 0.2 的图例。如果可能的话,我希望能够使用这种缩放(即设置范围在 0 和 0.1 之间)。我很感激任何建议!

library(ggplot2)
df1 <- data.frame(HNF4_Looping_HiChIPvsRNASeq_VillusvsCrypt$HiChIP_log2FC_VillusvsCrypt, HNF4_Looping_HiChIPvsRNASeq_VillusvsCrypt$RNAseq_log2FC_VillusvsCrypt)
ggplot(df1, aes(df$HNF4_Looping_HiChIPvsRNASeq_VillusvsCrypt.HiChIP_log2FC_VillusvsCrypt, df$HNF4_Looping_HiChIPvsRNASeq_VillusvsCrypt.RNAseq_log2FC_VillusvsCrypt))+                       
  stat_density_2d(aes(fill = ..level.. ), geom = "polygon")+scale_x_continuous(name="HiChIP_VillusvsCrypt", limits=c(-4,4))+scale_y_continuous(name="RNASeq_VillusvsCrypt", limits=c(-4,4))
4

1 回答 1

3

我无法重现您的示例代码,因此我将替换为标准数据集来说明我的观点。

使用边界简单地设置颜色/填充的限制并确保oob参数是合适的。

假设我们有以下情节。

library(ggplot2)

myplot <- ggplot(faithful, aes(eruptions, waiting)) +
  stat_density_2d(aes(fill = after_stat(level)),
                  geom = "polygon") +
  xlim(1, 6) +
  ylim(35, 100)
myplot

我们可以玩弄如下限制:

myplot + scale_fill_continuous(limits = c(0, 0.01), 
                               oob = scales::squish)

reprex 包于 2020-04-15 创建(v0.3.0)

如果要在基础值上设置乘数,可以使用aes()如下函数:

aes(fill = after_stat(level * 10))

请注意,该after_stat()功能需要 ggplot2 v3.3.0。早期版本使用stat()甚至更旧的语法是使用..myvariable...

于 2020-04-15T20:34:43.797 回答