2014-10-05 144 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