带有图例的通用图

时间:2012-11-11 02:35:52

标签: r function plot arguments legend

实现通用绘图方法的最佳方法是什么,因为我有2个系列+图例? 问题是我想为颜色和图例提供一些不错的默认值,但用户应该可以自由更改它:

obj = list(y1 = runif(100, 0, 10), y2 = runif(100, 20, 30))
class(obj) = 'foo'

plot.foo = function(myobj, col1 = 'red', col2 = 'blue', type = 'l', ...)
{
 ylim = c(min(obj$y1, obj$y2), max(obj$y1, obj$y2))
 plot(myobj$y1, type = type, col = col1, panel.first = grid(col = '#A9A9A9'), ylim =  ylim, ...)
 lines(myobj$y2, col = col2, type = type, ...)
}

plot(obj)

这看起来不错,但如果我打电话

plot(obj, col = 'black')

它引发了一个错误:

Error in plot.foo(obj, col = "black") : 
argument 2 matches multiple formal arguments

有没有办法在不破坏情节协议的情况下处理2系列+传说? (另一个问题是同步传奇 lwd pch 参数)

如果我骑上了...... arg,CRAN会拒绝我的包裹吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

你可以有一个期望名为cols的向量,没有默认值。然后,您可以添加:

 if(missing(cols)){
      col1= "red"
      col2 = "black"
  } else {
     col1=cols[1]
     col2=cols[2]
  }

肯定有更好的方法可以做到,但只是想我会把它扔掉。