R 如何使用ggplot2更改每个面轴的限制和分割?处理;x$clone()尝试应用非函数时出错;

R 如何使用ggplot2更改每个面轴的限制和分割?处理;x$clone()尝试应用非函数时出错;,r,ggplot2,axis,facet,facet-wrap,R,Ggplot2,Axis,Facet,Facet Wrap,我正在创建一个分为面的图形。为了更好地观察,这些方面中的一些需要在更小的范围内。我已经应用了一些技巧来实现这一点。但是,我需要更改某些面轴的限制和分割 调用必要的包,创建数据库并绘制绘图 devtools::install_github("zeehio/facetscales") library(ggplot2) library(facetscales) #Constructing data frame Source <- c(rep("Water"

我正在创建一个分为面的图形。为了更好地观察,这些方面中的一些需要在更小的范围内。我已经应用了一些技巧来实现这一点。但是,我需要更改某些面轴的限制和分割

调用必要的包,创建数据库并绘制绘图

devtools::install_github("zeehio/facetscales")
library(ggplot2)
library(facetscales)

#Constructing data frame
Source <- c(rep("Water", 12), rep("Oil", 12))
Range <- rep((c(rep("First", 4), rep("Second", 8))),2)
Xaxis <- c(0,1,2,5,0,1,2,5,10,20,30,40,
           0,1,2,5,0,1,2,5,10,20,30,40)
Yaxis <- c(0,1,2,5,0,1,2,5,10,20,30,40,
           0,1,2,5,0,1,2,5,10,20,30,40)

DF <- data.frame(Source, Range, Xaxis, Yaxis)
      
#plot
p <- ggplot(data = DF, aes(x = Xaxis, y = Yaxis)) +
  geom_smooth(method = "lm",
              formula = y ~ x) +
  geom_point()

因此,我选择使用
facetscales
包,并遵循和示例


我不明白我做错了什么。有人能帮帮我吗?

我想我找到了它不起作用的原因

facet\u网格中
使用
scales
参数指示每个面板是否具有与
c(“自由”、“自由x”、“自由y”)相似或不同的比例
。但是在
facet\u网格上设置
free\u x
仅在水平方向上是自由的,并且所有垂直分组具有相同的比例范围

指定
facet\u grid\u sc
时,
scales
参数用于区分每个比例的渲染方式,特别是
scales=list(x=scale\u x)
其中
scale\u x
匹配
cols=vars(Range)

库(ggplot2)
图书馆(小规模)
#构建数据框架

来源很难说,也许
FaceScales
依赖于
ggplot2
包的旧版本
ggplot2::Scale
是唯一具有
$clone()
方法的
ggproto
对象。如果
FaceScales
scales
对象替换为没有
$clone()
方法的对象,那么这就是问题所在。另外,我检查过,它确实有
$clone()
方法,所以这可能只是一个bug。也许在开发者的github上发布?
#plot using facet wrap
p + facet_wrap(Range~Source,
               scales = "free") +
  ggtitle("Using facet_wrap")
#axis specifications
scale_x <- list(
  "First" = scale_x_continuous(limits = c(0, 10), breaks = c(0, 2, 10)),
  "Second"= scale_x_continuous(limits = c(0, 40), breaks = c(0, 5, 40))
)

#plot using facet grid and the facetscales package
p + facet_grid_sc(rows = vars(Range),
                  cols = vars (Source),
                  scales = list(x = scale_x)) +
  ggtitle("Using facet_grid_sc")
error in x$clone() attempt to apply non-function