【问题标题】:Tricks to override plot.factor?覆盖 plot.factor 的技巧?
【发布时间】:2013-02-27 16:14:38
【问题描述】:

我已经使用plot 有一段时间了,我想知道如果 type 参数可以覆盖分类预测变量会破坏多少。现在 plot 总是在 x 变量是一个因素时尝试箱线图。似乎 plot.factor 方法总是被调用。如果 type 可以覆盖该功能并且我不必将 x 轴设为数字,将其隐藏,然后稍后再添加,那就太好了。我对包装函数不感兴趣,因为我几乎只是描述了如何做到这一点。我只是想知道是否有一个我错过的plot 参数可以解决这个问题。

例如,在这种情况下通常会尝试绘制箱线图...

y <- 1:4
x <- factor(letters[1:4])
plot(y ~ x)

我希望它只绘制点并正确标记 x 轴。以下工作,但我希望有一个更简单的版本。

nx <- length(x)
plot(y ~ 1:nx, xaxt = 'n')
axis(1, 1:nx, x, xlab = '')

我希望像下面这样的东西可能会起作用......

plot(y ~ x, type = 'n')
points(1:nx, y)

但是不行。而type = 'p' 也不这样做。

我相信最后一次失败是 R 中不一致的另一个例子。设置 type = 'n' 也应该在方法调用中起作用,或者应该强制所有 plot 函数使用它(继承或至少通过 @ 987654330@)。它在plot.default

【问题讨论】:

  • 仅供参考:您标记错误的type 参数的行为实际上是记录在案的行为。在plot.factor 中描述进一步的参数时,文档清楚地说明了“无接受类型。”。您所描述的更像是一个功能请求,即 R Core 向 boxplot 添加一个类型参数(最终被称为)。他们可能会(正确地)争辩说,为人们节省 1-2 行额外的调用 axis 的努力并不值得。
  • 我认为一致性比简洁更重要。好的,是的,也许我应该把它作为一个功能请求。
  • 嘿,我实际上是站在你这边的。我认为,对于像plot 这样的泛型,追踪哪些参数与哪些方法相关可能比理想情况下希望的要复杂。我只是指出了一个(有点陈词滥调)的事实,即这种非常复杂性意味着进行更改可能比收益更多。
  • 是否可以编写自己的Plot() 命令来实现所需的行为(u)rs?

标签: r plot


【解决方案1】:

你可以调用 plot.default:

y<-rnorm(100)
x<-factor(sample(c("a","b","c"),size=100,replace=TRUE))
plot.default(x,y)

编辑:将因子级别更改为字符,因此很明显这即使在那时也有效。

【讨论】:

  • +1 这很好,但您仍然必须抑制 x 轴,然后将其重新打开。它没有节省任何步骤,但它比我做的方式更好地表达了代码中的意图。
  • 好的,既然你更新了你的问题,我明白你在找什么。是的,这对 x 轴没有帮助。由于 x 是使用通用绘图函数的因子,因此将始终使用 plot.factor 方法,并使用数字 y 生成箱线图。如果有比抑制和重做 x 轴更聪明的方法,我想它仍然需要 plot.default。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多