当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

等轴r-散射图

admin 89℃
我的数据集如下:

DataFrame <- data.frame(x=runif(25),y=runif(25),
                        z=sample(letters[1:4],25,rep=TRUE))

使用格子软件包,我可以画一个等轴的散点图(一条1:1的线穿过中心),线如下:

xyplot(y ~ x | z, data=DataFrame,
       scales=list(relation="free"),
       prepanel=function(x,y,...) {
         rg <- range(na.omit(c(x,y)))
         list(xlim=rg,ylim=rg)
       },panel=function(x,y,...) {
         panel.abline(0,1)
         panel.xyplot(x,y,...)
       })

在ggplot2中,我已经走了这么远:

ggplot(data=DataFrame) + geom_point(aes(x=x,y=y)) +
  facet_grid(~z,scales="free") + coord_equal(ratio=1) +
  geom_abline(intercept=0,slope=1)

但我不确定coord_equal()是我要找的函数。ggplot2中的等价函数调用是什么?

你的问题在于设置自由的面比例。一旦设置了facet scales为free,就不能添加 coord_equal() 如果你消除了自由秤,那么 coord_equal() 工作正常。

也许 facet_wrap() 是个更好的选择,据我所知 xlimylim 对于个别面板,GGPLOT2中不提供。

转载请注明:我的代码 » 等轴r-散射图