0

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

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

静态图片

但是,交互式版本(下面的对象 ggPS)似乎具有不正确居中的相关值和密度。即,它们似乎以左侧为中心。下图展示了这一点 -

交互式图像

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

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)

作为旁注,我尝试通过更改语法以创建对象 p 来使用发布在(GGpairs,相关值未对齐)的解决方案,如下所示:

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

然而,这似乎并没有什么不同。

任何建议将不胜感激!

4

1 回答 1

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)
于 2017-04-18T10:40:15.583 回答