2017-04-17 36 views
0

我使用包GGally(和方法ggpairs)创建散点图矩阵。ggpairs中的密度和相关值在ggplotly()中移位到左边

我注意到静态版本(下面的对象p)似乎具有正确居中的相关值和密度。下面的图片说明了这一点 -

Static image

然而,交互式版本(下面对象GGPS)似乎具有正确为中心的相关值和密度。也就是说,它们似乎是在左侧居中。下面的图片说明了这一点 -

Interactive image

我不知道是否有可能是解决这个问题的好方法?

library(plotly) 
library(GGally) 

set.seed(2) 
dat <- data.frame(ID = paste0("ID",1:100), A.1=sort(rnorm(100)), A.2=sort(rnorm(100)), A.3=sort(rnorm(100)), B.1=sort(rnorm(100)), B.2=sort(rnorm(100))) 

dat$ID <- as.character(dat$ID) 
minVal = 0 
maxVal = max(dat[,-1]) 

my_fn <- function(data, mapping, ...){ 
    x = data[,c(as.character(mapping$x))] 
    y = data[,c(as.character(mapping$y))] 
    p <- ggplot(data = dat, aes(x=x, y=y)) + coord_cartesian(xlim = c(minVal, maxVal), ylim = c(minVal, maxVal)) 
    p 
} 

p <- ggpairs(dat[,-1], lower = list(continuous = my_fn)) 

ggPS <- ggplotly(p) 

作为一个方面说明,我试图通过改变使用语法张贴在(GGpairs, correlation values are not aligned)的解决方案来创造物P如下:

p <- ggpairs(dat[,-1], lower = list(continuous = my_fn), upper = list(continuous = wrap("cor", hjust=5))) 

然而,这并未使区别。

任何建议将不胜感激!

回答

1

理想情况下,您可以使用布局规格以图形方式访问模式栏中的自动缩放选项。现在最简单的选择(可能不是最优)是从数据帧设置最小/最大值,而不是每个数据对的最小/最大值。

my_fn <- function(data, mapping, ...){ 
    x = data[,c(as.character(mapping$x))] 
    y = data[,c(as.character(mapping$y))] 
    p <- ggplot(data = dat, aes(x=x, y=y)) + coord_cartesian(xlim = c(min(dat[,-1]),max(dat[,-1]))) 
    p 
} 

p <- ggpairs(dat[,-1], lower = list(continuous = my_fn)) 

ggPS <- ggplotly(p)