我正在尝试向ggplot添加自定义图例。我正在使用(http://www.nicebread.de/visually-weighted-watercolor-plots-new-variants-please-vote/)的水彩图。 vwReg的代码存在于网站中。
我正在绘制2个不同的数据
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_path中添加一个颜色,以创建spag(spagetti)图。然而,情节太薄而且不可见。我想知道是否有办法将自定义图例添加为单独的图层并告诉它有2种颜色的红色和绿色。
答案 0 :(得分:2)
您也可以通过更改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)
对于这样的事情:
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)
你将能够在你的情节上得到传说(this answer给出了一个以这种方式映射颜色的例子)。
你需要做一些工作才能使传奇看起来正确。首先,您必须更改legend.position
中的theme
(现在legend.position
设置为&#34;无&#34;)。一旦你允许传说,你就会发现alpha
有一个连续的传奇,你可能想要移除它。您可以使用scale_color_manual
编辑颜色图例。
如上所述编辑vwReg
功能之后,这里有一种方法可以使用图例为每个组制作一个颜色的图形。
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)
答案 1 :(得分:0)
我发现了一种丑陋(并且完全不优雅)的方法。它结合了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()