繁体   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