ggPairs中的密度和相关值在ggplotly()中向左移动

时间:2017-04-17 23:29:24

标签: r plotly ggally

我正在使用GGally包(和方法ggpairs)来创建散点图矩阵。

我注意到静态版本(下面的对象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 个答案:

答案 0 :(得分:0)

理想情况下,您可以使用plotly中的布局规范访问模式栏中的自动缩放选项。目前最简单的选择(可能不是最佳选择)是设置数据帧的最小值/最大值,而不是每个数据对的最小值/最大值。

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)