2015-09-15 2 views
2

Я пытаюсь визуализировать набор данных с помощью ggpairs из библиотеки GGally в R. Я хочу иметь диагональ с графиками плотности каждой переменной, разделенной переменной группировки. Я не могу получить правильные сюжеты из-за масштабной проблемы. Для того, чтобы проиллюстрировать свою точку зрения, я буду использовать следующий искусственный набор данных:Правильная шкала плотностей с несколькими группами с использованием GGally в R

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") 

enter image description here

Теперь сравните верхний левый участок в плотность плотности переменной х, полученной с использованием простой ggplot2:

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

enter image description here

Мы можем видеть, что шкала y красных и синих кривых в ggpairs (первая цифра) не одинакова, что может привести к вводящим в заблуждение выводам. Как я могу исправить это в ggpairs?

+1

сделайте отдельные участки самостоятельно и используйте 'grid.arrange', возможно, вместо того, чтобы полагаться на ggally? или указать проблему с сопровождающим 'Barret Schloerke '? – hrbrmstr

ответ

0

Вот ответ от разработчиков:

Вы правильно. они отображаются неправильно. :-(

С текущей версией 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")) 

До следующего релиза, вы не можете использовать процесс Eval в ggpairs. "ggally_FN_NAME" или "ggally_FN_NAMEDiag" являются . соглашения об именовании к последующим следующий релиз позволит для представления пользовательских функций непосредственно, такие как:

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

См. Более подробную информацию в их github page

Смежные вопросы