Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动为r中的图形生成图例?_R_Styles_Plot_Legend - Fatal编程技术网

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

自动为r中的图形生成图例?,r,styles,plot,legend,R,Styles,Plot,Legend,是否有可能在R中自动生成图例?有一件事让我非常恼火,那就是冗余信息,我必须输入这些信息才能显示图例(例如线条颜色…) 我已经提供了关于线条颜色的信息,。。。在命令绘图和行中。如果我不必在图例中再次添加此信息,那就太好了 例如,是否可以将“线”-对象和“绘图”-对象存储在变量中,并仅将这些对象传递给图例(图例在其中查找所需信息) 例如,是否可以存储“线”-对象和 “绘图”-变量中的对象,仅将这些对象传递给图例 (图例可找到所需信息) 不容易。但是,ggplot2提供了此功能。比如说, ##Crea

是否有可能在R中自动生成图例?有一件事让我非常恼火,那就是冗余信息,我必须输入这些信息才能显示图例(例如线条颜色…)

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

例如,是否可以将“线”-对象和“绘图”-对象存储在变量中,并仅将这些对象传递给图例(图例在其中查找所需信息)

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

不容易。但是,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
函数的包装,就可以记录一次指定的样式,并将它们传递给各种绘图函数和图例


ggplot2lattice软件包是一种更高层次的方法,在这种方法中,您可以自动完成这类工作。

如果希望图例看起来像您的绘图,您需要自定义图例。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))))