2016-08-24 123 views
4

我想給hline圖添加一個圖例。如何將圖例添加到hline?

我的子集的頭看起來像這樣

Site  Date Al 
1 Bo6 2014-10-07 152.1 
2 Bo1 2014-10-07 157.3 
3 Bo3 2014-10-07 207.1 
4 Bo4 2014-10-07 184.3 
5 Bo5 2014-10-07 23.2 
13 Bo6 2014-10-14 96.8 

我的代碼如下:

require(ggplot2) 
require(reshape2) 
require(magrittr) 
require(dplyr) 
require(tidyr) 
setwd("~/Documents/Results") 
mydata <- read.csv("Metals sheet Rwosnb5.csv") 
mydata <- read.csv("Metals sheet Rwosnb5.csv") 
L <- subset(mydata, Site =="Bo1"| Site == "Bo2"| Site == "Bo3"| Site ==   "Bo4"| Site == "Bo5" | Site == "Bo6", select = c(Site,Date,Al)) 
L$Date <- as.Date(L$Date, "%d/%m/%Y") 
I <- ggplot(data=L, aes(x=Date, y=Al, colour=Site)) + 
    geom_point() + 
    labs(title = "Total Al in the Barlwyd and Bowydd in Pant-yr-afon sites B4-B9 
    2014-2015.", x = "Month 2014/2015", 
    y = "Total concentration (mg/L)") + 
    scale_y_continuous(limits = c(0, 500)) + 
    scale_x_date(date_breaks = "1 month", date_labels = "%m") 
I + geom_hline(aes(yintercept= 10), linetype = 2, colour= 'red', show.legend =TRUE) + 
    geom_hline(aes(yintercept= 75.5), linetype = 2, colour= 'blue', show.legend = TRUE) 

出於某種原因,傳說不起作用 - 傳說有六個地點與通過他們。我會理想地喜歡一個標題=限制 和標籤1(10)= NRW限制和標籤2(75.5)=地球化學圖集極限的圖例。

+1

請閱讀[如何提供中的R最小再現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-例如#答案-5963610)。然後相應地編輯並改進它。好的帖子通常提供最少的輸入數據,所需的輸出數據和代碼嘗試 - 在新的/乾淨的R會話中進行全部複製 - 粘貼 - 運行。例如。你的例子不能像沒有人一樣運行,除非你有CSV文件,'庫(ggplot2)'缺少等。 – lukeA

+0

你試過'show_guide'而不是'show.legend'嗎? http://stackoverflow.com/questions/17092894/how-to-added-a-custom-legend-for-geom-hline&http://stackoverflow.com/questions/17092894/how-to-added-a-自定義傳奇爲geom-hline – bVa

+0

我剛剛嘗試過,並收到錯誤消息「'show_guide'已被棄用。請使用'show.legend'而不是」 – LucySHE

回答

12

您可以使用linetype唯美性來爲水平線製作單獨的圖例,而不是將它們添加到現有圖例中。

要做到這一點,我們可以在aes內移動linetype,同時仍映射到一個常量。我用你想要的標籤作爲常量。圖例名稱和使用的線型可以在scale_linetype_manual中設置。我刪除show.legend = TRUE以使線條不在其他圖例中。圖例顏色固定在override.aes

I + geom_hline(aes(yintercept= 10, linetype = "NRW limit"), colour= 'red') + 
    geom_hline(aes(yintercept= 75.5, linetype = "Geochemical atlas limit"), colour= 'blue') + 
    scale_linetype_manual(name = "limit", values = c(2, 2), 
         guide = guide_legend(override.aes = list(color = c("blue", "red")))) 

enter image description here

+0

謝謝!什麼是R whizzkid :-) – LucySHE