自动为r中的图形生成图例?

时间:2012-11-02 09:28:38

标签: r styles plot legend

是否有可能在R中自动生成图例?让我烦恼的一件事是多余的信息,我必须输入以显示图例(例如线条颜色......)

plot(
  c(1:5), c(.7, 2.2, 3.1, 3.9, 5.2),
  col=1,
  pch=3,
  type="b"
)

lines(
  c(1:5), c(1:5),
  col=2,
  pch=6,
  type="o"
)

legend(
  "topleft",
  legend=c("data", "expactation"),
  col=c(1, 2),
  pch=c(3, 6),
  lty=c(2 ,1)
)

我已经在命令plotlines中提供了有关线条颜色的信息....如果我不必在图例中再次添加此信息,那就太好了。

例如,是否可以将“lines”-Object和“plot”-object存储在变量中,并且只将这些对象传递给图例(图例找到所需的信息)?

p = plot(...)
l = lines (...)
legend("topleft", p, l)

3 个答案:

答案 0 :(得分:3)

  

例如可以存储“行” - 对象和   “plot” - 变量中的对象,仅将这些对象传递给图例   (图例找到所需信息的地方)

不容易。但是,ggplot2为您提供此功能。例如,

##Create some data and load the library
dd = data.frame(x = c(1:5,1:5), y = c(.7, 2.2, 3.1, 3.9, 5.2, 1:5), 
                type=rep(c("data", "expectation"), each=5))

require(ggplot2)

接下来,我们创建一个plot对象:

##Legend is automatically generated
g = ggplot(data=dd, aes(x = x, y=y)) + 
    geom_point(aes(colour=type, pch=type))
g

不是我们在“情节对象”中添加了一些行:

g + geom_line(aes(colour=type, pch=type))

答案 1 :(得分:2)

不,不是没有大量的工作和包装器plot功能,所以你要记录一次指定的样式并将它们传递给各种绘图功能和图例。

ggplot2 包是更高级别的方法, 这种事情是自动化的。

答案 2 :(得分:0)

如果您想让它看起来像您的情节,则需要自定义图例。格子在技术上得到了auto.key选项,但它给你丑陋的默认颜色和点类型。但是,您可以在创建绘图之前轻松存储参数的值,然后将它们传递给相应的参数。下面是格子的例子:

#your example data
d <- data.frame(a=rep(1:5,2), b=c(.7, 2.2, 3.1, 3.9, 5.2, 1, 2, 3, 4, 5), 
                c=rep(c("data", "expactation"),each=5))
#your `pch` and 'col` you pass to the plot
pch.a <- c(3,6)
col.a <- 1:2
library(lattice)
xyplot(a ~ b, groups=c, data = d, type="o", col=col.a, pch=pch.a, aspect=1/2,
       key = list(points=list(pch=pch.a, col=col.a), text=list(levels(d$c))))

enter image description here

相关问题