自动为r中的图形生成图例?
是否有可能在R中自动生成图例?有一件事让我非常恼火,那就是冗余信息,我必须输入这些信息才能显示图例(例如线条颜色…) 我已经提供了关于线条颜色的信息,。。。在命令自动为r中的图形生成图例?,r,styles,plot,legend,R,Styles,Plot,Legend,是否有可能在R中自动生成图例?有一件事让我非常恼火,那就是冗余信息,我必须输入这些信息才能显示图例(例如线条颜色…) 我已经提供了关于线条颜色的信息,。。。在命令绘图和行中。如果我不必在图例中再次添加此信息,那就太好了 例如,是否可以将“线”-对象和“绘图”-对象存储在变量中,并仅将这些对象传递给图例(图例在其中查找所需信息) 例如,是否可以存储“线”-对象和 “绘图”-变量中的对象,仅将这些对象传递给图例 (图例可找到所需信息) 不容易。但是,ggplot2提供了此功能。比如说, ##Crea
绘图
和行
中。如果我不必在图例中再次添加此信息,那就太好了
例如,是否可以将“线”-对象和“绘图”-对象存储在变量中,并仅将这些对象传递给图例(图例在其中查找所需信息)
例如,是否可以存储“线”-对象和
“绘图”-变量中的对象,仅将这些对象传递给图例
(图例可找到所需信息)
不容易。但是,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
object`:
##Legend is automatically generated
g = ggplot(data=dd, aes(x = x, y=y)) +
geom_point(aes(colour=type, pch=type))
g
不,我们在“绘图对象”中添加一些行:
不,如果没有大量的工作和
plot
函数的包装,就可以记录一次指定的样式,并将它们传递给各种绘图函数和图例
ggplot2和lattice软件包是一种更高层次的方法,在这种方法中,您可以自动完成这类工作。如果希望图例看起来像您的绘图,您需要自定义图例。Lattice技术上获得了
auto.key
选项,但它提供了难看的默认颜色和点类型。但是,在绘制绘图之前,您可以轻松地存储参数值,然后将它们传递给相应的参数。下面是使用lattice的示例:
#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))))
#您的示例数据
d试着看ggplot2
,正如答案所示,你要求做很多工作。考虑到您可以选择创建一个具有不同大小的符号(或线宽)的图例,为了清晰起见,或者您可能希望指示所有虚线,不管颜色如何,都指的是一组变量等等。因此,首先,您可能不太可能有一个通用的“自动图例”格式。在这方面,R比E--l(一个未命名的电子表格应用程序)要好得多。
##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))
#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))))