我正在使用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)
作为旁注,我尝试使用(GGpairs, correlation values are not aligned)发布的解决方案,通过更改语法来创建对象p,如下所示:
p <- ggpairs(dat[,-1], lower = list(continuous = my_fn), upper = list(continuous = wrap("cor", hjust=5)))
但是,这似乎没有什么区别。
任何建议都会非常感激!
答案 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)