2014-10-05 4575 views
0

如何在图片内手动添加图例。我试图在网上找到答案,但未能找到合适的答案。请指教。如何用ggplot2手动添加图例

感谢您的帮助提前。

p = ggplot(gData, aes(seq, mue)) + geom_line(aes(x = seq, y = mue), lty=1, lwd=1) + xlim(-10, 10) + ylim(-1.0, 1.0) + 

xlab(expression(paste(u[t-1],sep = ""))) + ylab(expression(paste(mu[t],""))) + 

geom_line(aes(x = seq, y = se1), type="b", lty=2, lwd=1.1) + geom_line(aes(x = seq, y = se2), type="b", lty=2, lwd=1.1) + 

theme(axis.title.x = element_text(face = "bold", color = "black", size = 14), 

axis.title.y = element_text(face = "bold", color = "black", size = 14)) 
+0

不知道如果我的理解正是你正在尝试做的,但你可以调整与'主题'legend.position'参数图例的位置()'函数,例如'主题(legend.position = “顶部”)'。该函数也可以将坐标作为参数。看到这里(http://www.cookbook-r.com/Graphs/Legends_%28ggplot2%29/)了解如何改变'ggplot2'中的图例的一些例子。 – rseubert 2014-10-05 10:29:40

回答

0

您可以使用theme(legend.position=c(num, num))手动选择图例位置。考虑到下面的OP评论,我采取了以下方法。

# Sample data 
seq <- rep(c(1:10), times = 3) 
value <- rep(c(10,9,6,5,3,2), each = 5) 
category <- rep(c("se1", "me", NA), each = 10) 
foo <- data.frame(seq, value, category, stringsAsFactors = FALSE) 

ggplot(data = foo, aes(x = seq, y = value, color = category)) + 
geom_line(lty=1, lwd=1) + 
theme(legend.position=c(.8, .5)) + 
scale_x_continuous(breaks = seq) 

enter image description here

+0

非常感谢您的回答。我有3行,1. se1,2. mue,和3,se2。 Se1和Se2基本上是下界和上界,mu是中间线。我想只有mue和se1的图例。如何删除图例中的se2而不删除图的3行。 – 2014-10-05 11:17:07

+0

@SaikatSarkar我不知道你是如何格式化你的数据的。我在这里做的样本是在数据框中命名se2 NA。您会看到灰色的线条,但se2并未出现在图例中。 – jazzurro 2014-10-05 16:38:01

+0

这是一个很好的例子。它帮助我理解为什么和发生了什么。 color = category似乎是做这件事的好方法。但是,如果我使用“aes(x = seq,y = value,linetype = category”),那么我会得到Zig Zag线,我不知道为什么,如何处理这个问题 – 2014-10-06 00:44:15