2017-04-17 23 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)