是否有可能在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)
)
我已经在命令plot
和lines
中提供了有关线条颜色的信息....如果我不必在图例中再次添加此信息,那就太好了。
例如,是否可以将“lines”-Object和“plot”-object存储在变量中,并且只将这些对象传递给图例(图例找到所需的信息)?
p = plot(...)
l = lines (...)
legend("topleft", p, l)
答案 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))))