簡體   English   中英

如何修改 ggplot2 stat_density_2d 輪廓 plot 密度縮放?

[英]How to modify ggplot2 stat_density_2d contour plot density scaling?

我正在使用一個兩列表,我試圖從中制作密度輪廓 plot 。 “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))

我無法重現您的示例代碼,因此我將替換為標准數據集來說明我的觀點。

使用邊界只需設置顏色/填充的限制並確保oob參數是合適的。

假設我們有以下 plot。

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 package (v0.3.0) 於 2020 年 4 月 15 日創建

如果要在基礎值上設置乘數,可以使用aes() function,如下所示:

aes(fill = after_stat(level * 10))

注意after_stat() function 需要 ggplot2 v3.3.0。 早期版本使用stat()甚至更舊的語法是使用..myvariable..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM