使用facet_grid向ggplot添加图例

时间:2013-05-15 00:44:54

标签: r ggplot2 legend

我正在使用下面显示的代码创建一个3x3分面图。问题是我没有传说。

# Create column vectors
XID <- rep(c(1,5,10), each=57)
TAD.unit <- c(0, 0.25, 0.5, 0.75, 1, 1.5, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24, 36, 48, 72)
TAD <- rep(TAD.unit, length=length(XID))
FID <-rep(c(1,2,3),each=length(TAD.unit),length=length(XID))
time <- TAD + (FID-1)*14*24
dist1 <- pweibull(TAD,2,2)
dist2 <- pweibull(TAD,2,4)

# Create data frame
data.df <- as.data.frame(cbind(XID,time, FID, dist1, dist2, TAD))

library(ggplot2)
label_both = function(column,value){paste(column,"=",value)}

# Create plot
my.plot1 <- ggplot(data.df, aes(x=TAD, y=dist1)) + geom_point() + 
  geom_line(aes(x=TAD, y=dist2)) +
  facet_grid(XID ~ FID, labeller=label_both) +
  labs(x = "TAD", y = "Response")

# alternative data structure per recommendation in
# http://stackoverflow.com/questions/15418302/ggplot2-how-to-show-the-legend?rq=1
library(reshape)
df.2 <- melt(data.df, id=c("XID","FID","TAD","time"))

我尝试使用数据框df.2来查看是否有助于根据堆栈溢出线程中的建议我提供链接。我尝试了各种ggplot命令,但我仍然无法使其工作。 有人可以帮助我吗?

另外,如何将图例放置在3x3内有空格的位置?

非常感谢!

1 个答案:

答案 0 :(得分:0)

对于图例绘制,请使用您的融合数据框,例如使用颜色来区分您的两个距离数据集。例如。像这样:

ggplot(df.2, aes(x=TAD, y=value, colour = variable)) + geom_line() + facet_grid(XID ~ FID, labeller=label_both) + labs(x = "TAD", y = "Response")

至于传说定位,我会以一个很好的答案向你推荐这个问题:

Position legend in first plot of facet