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