R 在ggplot2多层图形中添加外部/自定义图例
我正在尝试向ggplot添加自定义图例。我使用的是()中的水彩绘图。网站上提供了vwReg的代码 我正在绘制两个不同的数据,如下所示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
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)