Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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 在ggplot2多层图形中添加外部/自定义图例_R_Ggplot2 - Fatal编程技术网

R 在ggplot2多层图形中添加外部/自定义图例

R 在ggplot2多层图形中添加外部/自定义图例,r,ggplot2,R,Ggplot2,我正在尝试向ggplot添加自定义图例。我使用的是()中的水彩绘图。网站上提供了vwReg的代码 我正在绘制两个不同的数据,如下所示 mtcars$rand2 = rnorm(nrow(mtcars)) mtcars$rand1 = rnorm(nrow(mtcars)) pp1 = vwReg(rand1~wt, data=mtcars, spag=T, add=T, shade=F, spag.color="green") pp2 = vwReg(rand2~wt, data=mtc

我正在尝试向ggplot添加自定义图例。我使用的是()中的水彩绘图。网站上提供了vwReg的代码

我正在绘制两个不同的数据,如下所示

 mtcars$rand2 = rnorm(nrow(mtcars))
 mtcars$rand1 = rnorm(nrow(mtcars))
 pp1 = vwReg(rand1~wt, data=mtcars, spag=T, add=T, shade=F, spag.color="green")
 pp2 = vwReg(rand2~wt, data=mtcars, spag=T, add=T, shade=F, spag.color="red")
 ggplot2() + pp1 + pp2
然而,它并没有给rand1和rand2留下任何传奇。我试图在geom_路径中添加一种颜色,以创建spag(spagetti)绘图。但是,绘图太薄,不可见。我想知道是否有办法添加一个自定义图例作为单独的图层,并告诉它有两种颜色:红色和绿色。

我还可以从下载vwReg的代码。我发现了一个丑陋的(完全不优雅的)解决方法。它将ggplot2和图例与

 library(gridBase)
 plot.new()
 grid.newpage()
 pushViewport(viewport(layout = grid.layout(1, 1)))
 #Draw ggplot
 pushViewport(viewport(layout.pos.col = 1))
 print(ggplot2() + pp1 + pp2, newpage = FALSE)
 legend("topright", inset=.05, title="Number of Cylinders",
    c("rand1", "rand2"), fill=c("blue", "black") , horiz=TRUE)
 popViewport()

您也可以通过稍微更改
vwReg
功能来实现这一点。现在,
color
被设置为
spag.color
未映射。如果更改
vwReg
函数的此行:

gg.spag <-  geom_path(data=b2, aes(x=x, y=value, group=B), size=0.7, alpha=10/B, color=spag.color)

示例不可复制:
错误:找不到函数“vwReg”
。您没有说来自哪个包的
vwReg
。@Pascal很抱歉不清楚。我相信vcd包中有一个基于网格的legend(基本)版本,名为grid.legend。
gg.spag <-  geom_path(data=b2, aes_q(x=quote(x), y=quote(value), group=quote(B), color=spag.color), size=0.7, alpha=10/B)
ggplot() + 
    pp1 + pp2 + 
    theme(legend.position = "right") +
    scale_color_manual(name = "Number of Cylinders", values = c("green" = "green", "red" = "red"), 
                    labels = c("group1", "group2"), 
                    guide = guide_legend(override.aes = list(alpha = 1))) +
    scale_alpha_continuous(guide = FALSE)