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

丹尼尔·瓦伦西亚 C.

我正在创建一个分为多个方面的图表。其中一些方面需要在较小的范围内进行,以便更好地查看。我已经应用了几个技巧来实现这一点。但是,我需要更改某些方面的轴的限制和划分。

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

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()

我最初使用facet_wrapwith scales = "free",但我真正想要的是能够修改"First"中小平面的 x 轴的限制和划分

#plot using facet wrap
p + facet_wrap(Range~Source,
               scales = "free") +
  ggtitle("Using facet_wrap")

在此处输入图片说明

所以我选择使用这个facetscales包并遵循这个(1)这个(2)示例

#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

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

贾斯汀兰迪斯

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

facet_gridscales参数用来指示是否每个面板将具有相似或不同的尺度c("free","free_x","free_y")但是free_xonfacet_grid只有在水平方向是自由的,所有的垂直分组都有相同的比例范围。

指定时facet_grid_sc,该scales参数用于区分每个比例将如何呈现,特别scales = list(x = scale_x)scale_x匹配的位置cols = vars(Range)

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)

p <- ggplot(data = DF, aes(x = Xaxis, y = Yaxis)) +
  geom_smooth(method = "lm",
              formula = y ~ x) +
  geom_point()

#old plot without facet_grid_sc
p + facet_grid(rows = vars(Range),
               cols = vars (Source))

你看到如果你Range在行上切面,它们是垂直分割而不是水平分割的吗?我不认为facet_grid_sc支持一段free_x时间也指定 x 元素scales

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))
)

#new plot where scale_x matches cols argument
p + facet_grid_sc(cols = vars(Range),
                  rows = vars (Source),
                  scales = list(x = scale_x))

reprex 包(v1.0.0)于 2021 年 3 月 16 日创建


编辑

应该注意的facet_grid_sc是,如果您想单独控制每个面板列/行的范围或标签,可能更有用。在这个例子中使用scales = "free_x"infacet_grid实际上已经足够了。


p + facet_grid(cols = vars(Range),
               rows = vars (Source),
               scales = "free_x")

reprex 包(v1.0.0)于 2021 年 3 月 16 日创建

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用lm函数应用循环时出错

尝试更改 JavaFX 应用程序图标时出错

尝试在Android应用程序中使用Toast时出错

尝试在IF语句中使用函数参数时出错

尝试在Python Jupyter中使用.difference()函数时出错

尝试在R Shiny Application中使用mapply函数时出错

尝试使用PowerMockito模拟ProcessBuilder的构造函数时出错

尝试使用解构作为函数参数时出错

首次尝试在Rcpp中使用R函数时出错

在使用Windows应用程序表单时尝试使用字符串时出错

Azure移动应用程序-使用$ expand时,实体框架尝试重新插入子项时出错

尝试使用返回可返回HOC的函数的函数时出错(la Redux Connect)

尝试使用UISlider更改Swift音频应用中的速率时出错

尝试使用 ValueListenableBuilder 时出错

尝试使用pubnub时出错

尝试使用堆时出错

尝试使用LARAVEL Ver 5.3和PHP 7.0将应用程序推入Bluemix时出错

使用ggplot2绘制函数时出错

在ggplot2中使用facet_grid()时如何定义常见的y轴限制

尝试在应用程序中使用PrimeNG中的p-Dropdown时出错

尝试在.Net Core控制台应用程序中使用System.Drawing时出错

尝试在 Azure 应用服务上使用 WEB API 时出错

尝试在R中使用RWeka软件包应用决策C4.5算法时出错

尝试升级时处理存档时出错

Sails.js 尝试编辑和更新函数时出错

尝试通过 Firebase 函数使用 Facebook Messenger 平台发送消息时出错

使用API网关尝试AWS Python Lambda函数中的访问参数时出错

尝试使用辅助函数计算文本文件中的音节数时出错 [Python]

Haskell:尝试使用两个参数定义函数时出错