簡體   English   中英

在R中使用GGally校正具有多個組的密度圖的比例尺

[英]Correct scale of density plots with multiple groups using GGally in R

我正在嘗試使用R中GGally庫中的ggpairs可視化數據集。我想使用對角線,每個變量的密度圖由分組變量分隔。 由於比例尺問題,我無法獲得正確的繪圖。 為了說明我的觀點,我將使用以下人工數據集:

group=as.numeric(cut(runif(100),c(0,1/2,1),c(1,2)))
x=rnorm(100,group,1)
x[group==1]=(x[group==1])^2
y=2*x+rnorm(100,0,0.1)
data=data.frame(group=as.factor(group),x=x,y=y)

使用ggpairs,我得到以下圖

library(ggplot2)
library(GGally)    
ggpairs(data,columns = 2:3,colour="group")

在此處輸入圖片說明

現在,將左上方的圖與使用普通ggplot2獲得的變量x的密度圖進行比較:

ggplot(data, aes(x = x, colour = group)) + geom_density() 

在此處輸入圖片說明

我們可以看到,ggpairs中的紅色和藍色曲線的y比例(第一個圖)不同,這可能會導致誤導性結論。 如何在ggpairs中更正此問題?

這是開發人員的答案:

你是對的。 它們顯示不正確。 :-(

在當前的CRAN版本中,請嘗試以下操作...

 set.seed(1234) group = as.numeric(cut(runif(100),c(0,1/2,1),c(1,2))) x = rnorm(100,group,1) x[group == 1] = (x[group == 1])^2 y = (2 * x) + rnorm(100,0,0.1) data = data.frame(group = as.factor(group), x = x, y = y) library(ggplot2) library(GGally) # # bad example # ggpairs(data,columns = 2:3,colour="group") ggally_correct_diag_densityDiag <- function(data, mapping, ...) { # the color is corrected to fill by ggpairs # to get desired output with color, it is changed back here. if (! is.null(mapping$fill)) { mapping$colour = mapping$fill mapping$fill = NULL } ggplot(data, mapping) + geom_density(...) } ggpairs(data, columns = 2:3, colour = "group", diag = list(continuous = "correct_diag_density")) 

在下一個版本之前,您可以利用ggpairs的評估過程。 “ ggally_FN_NAME”或“ ggally_FN_NAMEDiag”是要遵循的命名約定。 下一版本將允許直接提交自定義功能,例如:

 ggpairs(data, columns = 2:3, colour = "group", diag = list(continuous = ggally_correct_diag_densityDiag)) 

在他們的github頁面上查看更多詳細信息

暫無
暫無

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

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